2

こんにちは、lucene を初めて使用します。lucene を使用してインデックスを作成しました。ファイル名とファイルの内容の 2 つのフィールドを lucene インデックスに追加しています。しかし、インデックスから検索しているとき、クエリワードの出現と、クエリワードを含むファイル名を取得できます。インデックスを作成したファイルの内容を表示できません

Directory directory = FSDirectory.open(indexDir);
IndexSearcher searcher = new IndexSearcher(directory,true);
QueryParser parser = 
    new QueryParser(Version.LUCENE_30,"contents", new SimpleAnalyzer());
Query query = parser.parse(queryStr);
query.setBoost((float)1.5);
TopDocs topDocs = searcher.search(query, maxHits);
ScoreDoc[] hits = topDocs.scoreDocs;
arr= new String[hits.length];
for ( i = 0; i <hits.length; i++) {
    int docId = hits[i].doc;
    Document d = searcher.doc(docId);
    arr[i]=d.get("filename");
}

インデックスを読み取るためにこのコードを使用しています。

4

1 に答える 1

3

簡単に言うと、Lucene インデックスへのフィールドのフィードに関連する 2 つの属性があります。

1) 索引付き : 検索のみ可能ですが、取り返しのつかないほど失われます。つまり、コンテンツを索引から読み戻すことはできません。

2) 保存済み : これらのフィールドのコンテンツは、損失することなく取得できます。

あなたの「ファイル名」フィールドは「インデックス付き」および「保存済み」ですが、「コンテンツ」は確かに「保存済み」ではありません。

上記は、データのインデックス作成中に指定されます。

以下を参照してください: 1.3 ドキュメント/オブジェクトをインデックスに追加する

于 2012-09-15T19:10:24.873 に答える