source: trunk/tools/assistant/lib/fulltextsearch/qquery.cpp@ 315

Last change on this file since 315 was 2, checked in by Dmitry A. Kuminov, 16 years ago

Initially imported qt-all-opensource-src-4.5.1 from Trolltech.

File size: 7.5 KB
Line 
1/****************************************************************************
2**
3** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
4** Contact: Qt Software Information ([email protected])
5**
6** This file is part of the QCLucene library and is distributable under
7** the terms of the LGPL license as specified in the license.txt file.
8**
9****************************************************************************/
10
11#include "qquery_p.h"
12#include "qclucene_global_p.h"
13
14#include <CLucene.h>
15#include <CLucene/search/PhraseQuery.h>
16#include <CLucene/search/SearchHeader.h>
17
18QT_BEGIN_NAMESPACE
19
20QCLuceneQueryPrivate::QCLuceneQueryPrivate()
21 : QSharedData()
22{
23 query = 0;
24 deleteCLuceneQuery = true;
25}
26
27QCLuceneQueryPrivate::QCLuceneQueryPrivate(const QCLuceneQueryPrivate &other)
28 : QSharedData()
29{
30 query = _CL_POINTER(other.query);
31}
32
33QCLuceneQueryPrivate::~QCLuceneQueryPrivate()
34{
35 if (deleteCLuceneQuery)
36 _CLDECDELETE(query);
37}
38
39
40QCLuceneQuery::QCLuceneQuery()
41 : d(new QCLuceneQueryPrivate())
42{
43 // nothing todo, private
44}
45
46QCLuceneQuery::~QCLuceneQuery()
47{
48 // nothing todo
49}
50
51void QCLuceneQuery::setBoost(qreal boost)
52{
53 d->query->setBoost(qreal(boost));
54}
55
56qreal QCLuceneQuery::getBoost() const
57{
58 return qreal(d->query->getBoost());
59}
60
61QString QCLuceneQuery::getQueryName() const
62{
63 return TCharToQString(d->query->getQueryName());
64}
65
66bool QCLuceneQuery::instanceOf(const QString &other) const
67{
68 if (other == getQueryName())
69 return true;
70
71 return false;
72}
73
74QString QCLuceneQuery::toString(const QString &field) const
75{
76 TCHAR *fieldName = QStringToTChar(field);
77 QString retValue = TCharToQString(d->query->toString(fieldName));
78 delete [] fieldName;
79
80 return retValue;
81}
82
83quint32 QCLuceneQuery::hashCode() const
84{
85 return quint32(d->query->hashCode());
86}
87
88QString QCLuceneQuery::toString() const
89{
90 return TCharToQString(d->query->toString());
91}
92
93bool QCLuceneQuery::equals(const QCLuceneQuery &other) const
94{
95 return d->query->equals(other.d->query);
96}
97
98
99QCLucenePrefixQuery::QCLucenePrefixQuery(const QCLuceneTerm &prefix)
100 : QCLuceneQuery()
101 , prefix(prefix)
102{
103 d->query = new lucene::search::PrefixQuery(prefix.d->term);
104}
105
106QCLucenePrefixQuery::~QCLucenePrefixQuery()
107{
108 // nothing todo
109}
110
111QString QCLucenePrefixQuery::getClassName()
112{
113 return TCharToQString(lucene::search::PrefixQuery::getClassName());
114}
115
116QCLuceneTerm QCLucenePrefixQuery::getPrefix() const
117{
118 return prefix;
119}
120
121
122QCLuceneRangeQuery::QCLuceneRangeQuery(const QCLuceneTerm &lowerTerm,
123 const QCLuceneTerm &upperTerm,
124 bool inclusive)
125 : QCLuceneQuery()
126 , lowerTerm(lowerTerm)
127 , upperTerm(upperTerm)
128{
129 d->query = new lucene::search::RangeQuery(lowerTerm.d->term,
130 upperTerm.d->term, inclusive);
131}
132
133QCLuceneRangeQuery::~QCLuceneRangeQuery()
134{
135 // nothing todo
136}
137
138QString QCLuceneRangeQuery::getClassName()
139{
140 return TCharToQString(lucene::search::RangeQuery::getClassName());
141}
142
143QCLuceneTerm QCLuceneRangeQuery::getLowerTerm() const
144{
145 return lowerTerm;
146}
147
148QCLuceneTerm QCLuceneRangeQuery::getUpperTerm() const
149{
150 return upperTerm;
151}
152
153bool QCLuceneRangeQuery::isInclusive() const
154{
155 lucene::search::RangeQuery *query =
156 static_cast<lucene::search::RangeQuery*> (d->query);
157
158 if (query == 0)
159 return false;
160
161 return query->isInclusive();
162}
163
164QString QCLuceneRangeQuery::getField() const
165{
166 lucene::search::RangeQuery *query =
167 static_cast<lucene::search::RangeQuery*> (d->query);
168
169 if (query == 0)
170 return QString();
171
172 return TCharToQString(query->getField());
173}
174
175
176QCLuceneTermQuery::QCLuceneTermQuery(const QCLuceneTerm &term)
177 : QCLuceneQuery()
178 , term(term)
179{
180 d->query = new lucene::search::TermQuery(term.d->term);
181}
182
183QCLuceneTermQuery::~QCLuceneTermQuery()
184{
185 // nothing todo
186}
187
188QString QCLuceneTermQuery::getClassName()
189{
190 return TCharToQString(lucene::search::TermQuery::getClassName());
191}
192
193QCLuceneTerm QCLuceneTermQuery::getTerm() const
194{
195 return term;
196}
197
198
199QCLuceneBooleanQuery::QCLuceneBooleanQuery()
200 : QCLuceneQuery()
201{
202 d->query = new lucene::search::BooleanQuery();
203}
204
205QCLuceneBooleanQuery::~QCLuceneBooleanQuery()
206{
207 qDeleteAll(queries);
208}
209
210QString QCLuceneBooleanQuery::getClassName()
211{
212 return TCharToQString(lucene::search::BooleanQuery::getClassName());
213}
214
215quint32 QCLuceneBooleanQuery::getClauseCount() const
216{
217 lucene::search::BooleanQuery *query =
218 static_cast<lucene::search::BooleanQuery*> (d->query);
219
220 if (query == 0)
221 return 1024;
222
223 return quint32(query->getClauseCount());
224}
225
226quint32 QCLuceneBooleanQuery::getMaxClauseCount() const
227{
228 lucene::search::BooleanQuery *query =
229 static_cast<lucene::search::BooleanQuery*> (d->query);
230
231 if (query == 0)
232 return 1024;
233
234 return quint32(query->getMaxClauseCount());
235}
236
237void QCLuceneBooleanQuery::setMaxClauseCount(quint32 maxClauseCount)
238{
239 lucene::search::BooleanQuery *query =
240 static_cast<lucene::search::BooleanQuery*> (d->query);
241
242 if (query == 0)
243 return;
244
245 query->setMaxClauseCount(size_t(maxClauseCount));
246}
247
248void QCLuceneBooleanQuery::add(QCLuceneQuery *query, bool required, bool prohibited)
249{
250 add(query, false, required, prohibited);
251}
252
253void QCLuceneBooleanQuery::add(QCLuceneQuery *query, bool delQuery,
254 bool required, bool prohibited)
255{
256 lucene::search::BooleanQuery *booleanQuery =
257 static_cast<lucene::search::BooleanQuery*> (d->query);
258
259 if (booleanQuery == 0)
260 return;
261
262 booleanQuery->add(query->d->query, delQuery, required, prohibited);