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