非常に単純な CLucene 実験であると思われるものがありますが、ヒットが返されません。
CreateIndex と Query という 2 つの別個のプログラムがあります。
私の知る限り、CreateIndex は実行可能なインデックス ファイルを作成しますが、Query はヒットを返しません。OSはCentos 6.4、CLuceneのバージョンは2.3.3.4です。
CreateIndex.cpp は次のとおりです。
lucene::analysis::SimpleAnalyzer* analyzer;
int main(int argc, char** argv)
{
analyzer = new lucene::analysis::SimpleAnalyzer();
Directory* indexDir = FSDirectory::getDirectory("../Index");
IndexWriter* w = new IndexWriter(indexDir, analyzer, true, true);
int config = Field::STORE_YES && Field::INDEX_TOKENIZED;
Field* field;
Document* doc;
doc = new Document();
field = new Field(L"president", L"Nixon", config);
doc->clear();
doc->add(*field);
w->addDocument(doc);
field = new Field(L"president", L"Obama", config);
doc->clear();
doc->add(*field);
w->addDocument(doc);
field = new Field(L"president", L"Clinton", config);
doc->clear();
doc->add(*field);
w->addDocument(doc);
w->close();
indexDir->close();
}
そして、ここに Query.cpp があります:
int main(int argc, char** argv)
{
IndexReader* reader = IndexReader::open("../Index");
lucene::analysis::SimpleAnalyzer* analyzer =
new lucene::analysis::SimpleAnalyzer();
IndexReader* newreader = reader->reopen();
if ( newreader != reader )
{
_CLLDELETE(reader);
reader = newreader;
}
IndexSearcher searcher(reader);
Query* query = QueryParser::parse(L"Nixon*",
L"president", analyzer);
Hits* hits = searcher.search(query);
cout << "Total hits: " << hits->length() << endl;
}