source: trunk/tools/assistant/lib/fulltextsearch/qsearchable.cpp@ 1168

Last change on this file since 1168 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: 4.9 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 "qsearchable_p.h"
19
20#include <CLucene.h>
21#include <CLucene/search/SearchHeader.h>
22
23QT_BEGIN_NAMESPACE
24
25QCLuceneSearchablePrivate::QCLuceneSearchablePrivate()
26 : QSharedData()
27{
28 searchable = 0;
29 deleteCLuceneSearchable = true;
30}
31
32QCLuceneSearchablePrivate::QCLuceneSearchablePrivate(const QCLuceneSearchablePrivate &other)
33 : QSharedData()
34{
35 searchable = _CL_POINTER(other.searchable);
36 deleteCLuceneSearchable = other.deleteCLuceneSearchable;
37}
38
39QCLuceneSearchablePrivate::~QCLuceneSearchablePrivate()
40{
41 if (deleteCLuceneSearchable)
42 _CLDECDELETE(searchable);
43}
44
45
46QCLuceneSearchable::QCLuceneSearchable()
47 : d(new QCLuceneSearchablePrivate())
48{
49 // nothing todo
50}
51
52QCLuceneSearchable::~QCLuceneSearchable()
53{
54 // nothing todo
55}
56
57
58QCLuceneSearcher::QCLuceneSearcher()
59 : QCLuceneSearchable()
60{
61 // nothing todo
62}
63
64QCLuceneSearcher::~QCLuceneSearcher()
65{
66 // nothing todo;
67}
68
69QCLuceneHits QCLuceneSearcher::search(const QCLuceneQuery &query)
70{
71 return search(query, QCLuceneFilter());
72}
73
74QCLuceneHits QCLuceneSearcher::search(const QCLuceneQuery &query,
75 const QCLuceneFilter &filter)
76{
77 return QCLuceneHits(*this, query, filter);
78}
79
80QCLuceneHits QCLuceneSearcher::search(const QCLuceneQuery &query,
81 const QCLuceneSort &sort)
82{
83 return QCLuceneHits(*this, query, QCLuceneFilter(), sort);
84}
85
86QCLuceneHits QCLuceneSearcher::search(const QCLuceneQuery &query,
87 const QCLuceneFilter &filter,
88 const QCLuceneSort &sort)
89{
90 return QCLuceneHits(*this, query, filter, sort);
91}
92
93
94QCLuceneIndexSearcher::QCLuceneIndexSearcher(const QString &path)
95 : QCLuceneSearcher()
96{
97 lucene::search::IndexSearcher *searcher =
98 new lucene::search::IndexSearcher(path);
99
100 reader.d->reader = searcher->getReader();
101 reader.d->deleteCLuceneIndexReader = false;
102
103 d->searchable = searcher;
104}
105
106QCLuceneIndexSearcher::QCLuceneIndexSearcher(const QCLuceneIndexReader &reader)
107 : QCLuceneSearcher()
108 , reader(reader)
109{
110 d->searchable = new lucene::search::IndexSearcher(reader.d->reader);
111}
112
113QCLuceneIndexSearcher::~QCLuceneIndexSearcher()
114{
115 // nothing todo
116}
117
118void QCLuceneIndexSearcher::close()
119{
120 d->searchable->close();
121}
122
123qint32 QCLuceneIndexSearcher::maxDoc() const
124{
125 return qint32(d->searchable->maxDoc());
126}
127
128QCLuceneIndexReader QCLuceneIndexSearcher::getReader()
129{
130 return reader;
131}
132
133bool QCLuceneIndexSearcher::doc(qint32 i, QCLuceneDocument &document)
134{
135 return d->searchable->doc(int32_t(i), document.d->document);
136}
137
138
139QCLuceneMultiSearcher::QCLuceneMultiSearcher(const QList<QCLuceneSearchable> searchables)
140: QCLuceneSearcher()
141{
142 lucene::search::Searchable** list=
143 _CL_NEWARRAY(lucene::search::Searchable*, searchables.count());
144
145 d->searchable = new lucene::search::MultiSearcher(list);
146
147 _CLDELETE_ARRAY(list);
148}
149
150QCLuceneMultiSearcher::~QCLuceneMultiSearcher()
151{
152 // nothing todo
153}
154
155void QCLuceneMultiSearcher::close()
156{
157 d->searchable->close();
158}
159
160qint32 QCLuceneMultiSearcher::maxDoc() const
161{
162 return qint32(d->searchable->maxDoc());
163}
164
165qint32 QCLuceneMultiSearcher::subDoc(qint32 index) const
166{
167 lucene::search::MultiSearcher *searcher =
168 static_cast<lucene::search::MultiSearcher*> (d->searchable);
169
170 if (searcher == 0)
171 return 0;
172
173 return qint32(searcher->subDoc(int32_t(index)));
174}
175
176qint32 QCLuceneMultiSearcher::subSearcher(qint32 index) const
177{
178 lucene::search::MultiSearcher *searcher =
179 static_cast<lucene::search::MultiSearcher*> (d->searchable);
180
181 if (searcher == 0)
182 return 0;
183
184 return qint32(searcher->subSearcher(int32_t(index)));
185}
186
187qint32 QCLuceneMultiSearcher::searcherIndex(qint32 index) const
188{
189 lucene::search::MultiSearcher *searcher =
190 static_cast<lucene::search::MultiSearcher*> (d->searchable);
191
192 if (searcher == 0)
193 return 0;
194
195 return qint32(searcher->searcherIndex(int32_t(index)));
196}
197
198bool QCLuceneMultiSearcher::doc(qint32 i, QCLuceneDocument &document)
199{
200 return d->searchable->doc(int32_t(i), document.d->document);
201}
202
203QT_END_NAMESPACE
Note: See TracBrowser for help on using the repository browser.