From e7923b75e94791c9d079b99a5a0d6e42849e3b23 Mon Sep 17 00:00:00 2001 From: kelson42 Date: Sat, 6 Nov 2010 16:03:32 +0000 Subject: [PATCH] + stub of Clucene search code (still does not work) --- src/common/kiwix/cluceneSearcher.cpp | 47 ++++++++++++++++++++++++++++ src/common/kiwix/cluceneSearcher.h | 34 ++++++++++++++++++++ src/common/kiwix/searcher.cpp | 2 +- src/common/kiwix/xapianSearcher.cpp | 2 +- 4 files changed, 83 insertions(+), 2 deletions(-) create mode 100644 src/common/kiwix/cluceneSearcher.cpp create mode 100644 src/common/kiwix/cluceneSearcher.h diff --git a/src/common/kiwix/cluceneSearcher.cpp b/src/common/kiwix/cluceneSearcher.cpp new file mode 100644 index 000000000..60b35b5b3 --- /dev/null +++ b/src/common/kiwix/cluceneSearcher.cpp @@ -0,0 +1,47 @@ +#include "cluceneSearcher.h" + +namespace kiwix { + + /* Constructor */ + CluceneSearcher::CluceneSearcher(const string &cluceneDirectoryPath) + : kiwix::Searcher() { + this->openIndex(cluceneDirectoryPath); + } + + /* Open Clucene readable database */ + void CluceneSearcher::openIndex(const string &directoryPath) { + this->reader = IndexReader::open(directoryPath.c_str()); + } + + /* Close Clucene writable database */ + void CluceneSearcher::closeIndex() { + return; + } + + /* Search strings in the database */ + void CluceneSearcher::searchInIndex(string &search, const unsigned int resultsCount) { + IndexSearcher searcher(reader); + SimpleAnalyzer analyzer; + QueryParser parser(_T("content"), &analyzer); + Query* query = parser.parse((const wchar_t*)search.c_str()); + Hits* hits = searcher.search(query); + + for (size_t i=0; i < hits->length() && i<10; i++) { + Document* d = &hits->doc(i); + _tprintf(_T("#%d. %s (score: %f)\n"), + i, d->get(_T("contents")), + hits->score(i)); + } + + /* + Result result; + result.url = doc.get_data(); + result.title = doc.get_value(0); + result.score = i.get_percent(); + + this->results.push_back(result); + */ + + return; + } +} diff --git a/src/common/kiwix/cluceneSearcher.h b/src/common/kiwix/cluceneSearcher.h new file mode 100644 index 000000000..3264a96bd --- /dev/null +++ b/src/common/kiwix/cluceneSearcher.h @@ -0,0 +1,34 @@ +#ifndef KIWIX_CLUCENE_SEARCHER_H +#define KIWIX_CLUCENE_SEARCHER_H + +#include +#include +#include "searcher.h" + +using namespace std; +using namespace lucene::analysis; +using namespace lucene::index; +using namespace lucene::document; +using namespace lucene::queryParser; +using namespace lucene::search; +using namespace lucene::store; + +namespace kiwix { + + class CluceneSearcher : public Searcher { + + public: + CluceneSearcher(const string &cluceneDirectoryPath); + + void searchInIndex(string &search, const unsigned int resultsCount); + + protected: + void closeIndex(); + void openIndex(const string &cluceneDirectoryPath); + + IndexReader* reader; + }; + +} + +#endif diff --git a/src/common/kiwix/searcher.cpp b/src/common/kiwix/searcher.cpp index 0c5158b4b..71f8c8f14 100644 --- a/src/common/kiwix/searcher.cpp +++ b/src/common/kiwix/searcher.cpp @@ -15,7 +15,7 @@ namespace kiwix { cout << "Performing query `" << search << "'" << endl; } - searchInIndex(search, resultsCount); + searchInIndex(removeAccents(search), resultsCount); this->resultOffset = this->results.begin(); diff --git a/src/common/kiwix/xapianSearcher.cpp b/src/common/kiwix/xapianSearcher.cpp index d49000360..01c349779 100644 --- a/src/common/kiwix/xapianSearcher.cpp +++ b/src/common/kiwix/xapianSearcher.cpp @@ -23,7 +23,7 @@ namespace kiwix { void XapianSearcher::searchInIndex(string &search, const unsigned int resultsCount) { /* Create the query */ Xapian::QueryParser queryParser; - Xapian::Query query = queryParser.parse_query(removeAccents(search)); + Xapian::Query query = queryParser.parse_query(search); /* Create the enquire object */ Xapian::Enquire enquire(this->readableDatabase);