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

Last change on this file was 846, checked in by Dmitry A. Kuminov, 14 years ago

trunk: Merged in qt 4.7.2 sources from branches/vendor/nokia/qt.

File size: 7.8 KB
Line 
1/****************************************************************************
2**
3** Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team.
4** All rights reserved.
5**
6** Portion Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
7** All rights reserved.
8**
9** This file may be used under the terms of the GNU Lesser General Public
10** License version 2.1 as published by the Free Software Foundation and
11** appearing in the file LICENSE.LGPL included in the packaging of this file.
12** Please review the following information to ensure the GNU Lesser General
13** Public License version 2.1 requirements will be met:
14** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
15**
16****************************************************************************/
17
18#include "qquery_p.h"
19#include "qclucene_global_p.h"
20
21#include <CLucene.h>
22#include <CLucene/search/PhraseQuery.h>
23#include <CLucene/search/SearchHeader.h>
24
25QT_BEGIN_NAMESPACE
26
27QCLuceneQueryPrivate::QCLuceneQueryPrivate()
28 : QSharedData()
29{
30 query = 0;
31 deleteCLuceneQuery = true;
32}
33
34QCLuceneQueryPrivate::QCLuceneQueryPrivate(const QCLuceneQueryPrivate &other)
35 : QSharedData()
36{
37 query = _CL_POINTER(other.query);
38 deleteCLuceneQuery = other.deleteCLuceneQuery;
39}
40
41QCLuceneQueryPrivate::~QCLuceneQueryPrivate()
42{
43 if (deleteCLuceneQuery)
44 _CLDECDELETE(query);
45}
46
47
48QCLuceneQuery::QCLuceneQuery()
49 : d(new QCLuceneQueryPrivate())
50{
51 // nothing todo, private
52}
53
54QCLuceneQuery::~QCLuceneQuery()
55{
56 // nothing todo
57}
58
59void QCLuceneQuery::setBoost(qreal boost)
60{
61 d->query->setBoost(qreal(boost));
62}
63
64qreal QCLuceneQuery::getBoost() const
65{
66 return qreal(d->query->getBoost());
67}
68
69QString QCLuceneQuery::getQueryName() const
70{
71 return TCharToQString(d->query->getQueryName());
72}
73
74bool QCLuceneQuery::instanceOf(const QString &other) const
75{
76 if (other == getQueryName())
77 return true;
78
79 return false;
80}
81
82QString QCLuceneQuery::toString(const QString &field) const
83{
84 TCHAR *fieldName = QStringToTChar(field);
85 QString retValue = TCharToQString(d->query->toString(fieldName));
86 delete [] fieldName;
87
88 return retValue;
89}
90
91quint32 QCLuceneQuery::hashCode() const
92{
93 return quint32(d->query->hashCode());
94}
95
96QString QCLuceneQuery::toString() const
97{
98 return TCharToQString(d->query->toString());
99}
100
101bool QCLuceneQuery::equals(const QCLuceneQuery &other) const
102{
103 return d->query->equals(other.d->query);
104}
105
106
107QCLucenePrefixQuery::QCLucenePrefixQuery(const QCLuceneTerm &prefix)
108 : QCLuceneQuery()
109 , prefix(prefix)
110{
111 d->query = new lucene::search::PrefixQuery(prefix.d->term);
112}
113
114QCLucenePrefixQuery::~QCLucenePrefixQuery()
115{
116 // nothing todo
117}
118
119QString QCLucenePrefixQuery::getClassName()
120{
121 return TCharToQString(lucene::search::PrefixQuery::getClassName());
122}
123
124QCLuceneTerm QCLucenePrefixQuery::getPrefix() const
125{
126 return prefix;
127}
128
129
130QCLuceneRangeQuery::QCLuceneRangeQuery(const QCLuceneTerm &lowerTerm,
131 const QCLuceneTerm &upperTerm,
132 bool inclusive)
133 : QCLuceneQuery()
134 , lowerTerm(lowerTerm)
135 , upperTerm(upperTerm)
136{
137 d->query = new lucene::search::RangeQuery(lowerTerm.d->term,
138 upperTerm.d->term, inclusive);
139}
140
141QCLuceneRangeQuery::~QCLuceneRangeQuery()
142{
143 // nothing todo
144}
145
146QString QCLuceneRangeQuery::getClassName()
147{
148 return TCharToQString(lucene::search::RangeQuery::getClassName());
149}
150
151QCLuceneTerm QCLuceneRangeQuery::getLowerTerm() const
152{
153 return lowerTerm;
154}
155
156QCLuceneTerm QCLuceneRangeQuery::getUpperTerm() const
157{
158 return upperTerm;
159}
160
161bool QCLuceneRangeQuery::isInclusive() const
162{
163 lucene::search::RangeQuery *query =
164 static_cast<lucene::search::RangeQuery*> (d->query);
165
166 if (query == 0)
167 return false;
168
169 return query->isInclusive();
170}
171
172QString QCLuceneRangeQuery::getField() const
173{
174 lucene::search::RangeQuery *query =
175 static_cast<lucene::search::RangeQuery*> (d->query);
176
177 if (query == 0)
178 return QString();
179
180 return TCharToQString(query->getField());
181}
182
183
184QCLuceneTermQuery::QCLuceneTermQuery(const QCLuceneTerm &term)
185 : QCLuceneQuery()
186 , term(term)
187{
188 d->query = new lucene::search::TermQuery(term.d->term);
189}
190
191QCLuceneTermQuery::~QCLuceneTermQuery()
192{
193 // nothing todo
194}
195
196QString QCLuceneTermQuery::getClassName()
197{
198 return TCharToQString(lucene::search::TermQuery::getClassName());
199}
200
201QCLuceneTerm QCLuceneTermQuery::getTerm() const
202{
203 return term;
204}
205
206
207QCLuceneBooleanQuery::QCLuceneBooleanQuery()
208 : QCLuceneQuery()
209{
210 d->query = new lucene::search::BooleanQuery();
211}
212
213QCLuceneBooleanQuery::~QCLuceneBooleanQuery()
214{
215 qDeleteAll(queries);
216}
217
218QString QCLuceneBooleanQuery::getClassName()
219{
220 return TCharToQString(lucene::search::BooleanQuery::getClassName());
221}
222
223quint32 QCLuceneBooleanQuery::getClauseCount() const
224{
225 lucene::search::BooleanQuery *query =
226 static_cast<lucene::search::BooleanQuery*> (d->query);
227
228 if (query == 0)
229 return 1024;
230
231 return quint32(query->getClauseCount());
232}
233
234quint32 QCLuceneBooleanQuery::getMaxClauseCount() const
235{
236 lucene::search::BooleanQuery *query =
237 static_cast<lucene::search::BooleanQuery*> (d->query);
238
239 if (query == 0)
240 return 1024;
241
242 return quint32(query->getMaxClauseCount());
243}
244
245void QCLuceneBooleanQuery::setMaxClauseCount(quint32 maxClauseCount)
246{
247 lucene::search::BooleanQuery *query =
248 static_cast<lucene::search::BooleanQuery*> (d->query);
249
250 if (query == 0)
251 return;
252
253 query->setMaxClauseCount(size_t(maxClauseCount));
254}
255
256void QCLuceneBooleanQuery::add(QCLuceneQuery *query, bool required, bool prohibited)
257{
258 add(query, false, required, prohibited);
259}
260
261void QCLuceneBooleanQuery::add(QCLuceneQuery *query, bool delQuery,
262 bool required, bool prohibited)
263{
264 lucene::search::BooleanQuery *booleanQuery =
265 static_cast<lucene::search::BooleanQuery*> (d->query);
266
267 if (booleanQuery == 0)
268 return;
269
270 booleanQuery->add(query->d->query, delQuery, required, prohibited);
271
272 if (delQuery) {
273 queries.append(query);
274 query->d->deleteCLuceneQuery = false;
275 }
276}
277
278
279QCLucenePhraseQuery::QCLucenePhraseQuery()
280 : QCLuceneQuery()
281{
282 d->query = new lucene::search::PhraseQuery();
283}
284
285QCLucenePhraseQuery::~QCLucenePhraseQuery()
286{
287 termList.clear();
288}
289
290QString QCLucenePhraseQuery::getClassName()
291{
292 return TCharToQString(lucene::search::RangeQuery::getClassName());
293}
294
295qint32 QCLucenePhraseQuery::getSlop() const
296{
297 lucene::search::PhraseQuery *phraseQuery =
298 static_cast<lucene::search::PhraseQuery*> (d->query);
299
300 if (phraseQuery == 0)
301 return 0;
302
303 return qint32(phraseQuery->getSlop());
304}
305
306void QCLucenePhraseQuery::setSlop(const qint32 slop)
307{
308 lucene::search::PhraseQuery *phraseQuery =
309 static_cast<lucene::search::PhraseQuery*> (d->query);
310
311 if (phraseQuery == 0)
312 return;
313
314 phraseQuery->setSlop(int32_t(slop));
315}
316
317void QCLucenePhraseQuery::addTerm(const QCLuceneTerm &term)
318{
319 lucene::search::PhraseQuery *phraseQuery =
320 static_cast<lucene::search::PhraseQuery*> (d->query);
321
322 if (phraseQuery == 0)
323 return;
324
325 termList.append(term);
326 phraseQuery->add(term.d->term);
327}
328
329void QCLucenePhraseQuery::addTerm(const QCLuceneTerm &term, qint32 position)
330{
331 lucene::search::PhraseQuery *phraseQuery =
332 static_cast<lucene::search::PhraseQuery*> (d->query);
333
334 if (phraseQuery == 0)
335 return;
336
337 termList.insert(position, term);
338 phraseQuery->add(term.d->term, int32_t(position));
339
340}
341
342QString QCLucenePhraseQuery::getFieldName() const
343{
344 lucene::search::PhraseQuery *phraseQuery =
345 static_cast<lucene::search::PhraseQuery*> (d->query);
346
347 if (phraseQuery == 0)
348 return QString();
349
350 return TCharToQString(phraseQuery->getFieldName());
351}
352
353QList<QCLuceneTerm> QCLucenePhraseQuery::getTerms() const
354{
355 return termList;
356}
357
358QT_END_NAMESPACE
Note: See TracBrowser for help on using the repository browser.