6

非常に単純な 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;
}
4

0 に答える 0