1

そのため、Lucene インデックス ドキュメントに「Field1」という名前のフィールドがあります (すべての意図と目的のために)。

Luke を開いてドキュメントを参照すると、ほとんどのドキュメントにこのフィールドがあることがわかります。ただし、検索タブに切り替えて入力するField1:parameterValueと、検索結果がゼロになります。

ドキュメントのインデックス作成を行うとき、私は持っています

doc.Add(new Field("Field1", field1, Field.Store.YES, Field.Index.ANALYZED));

フィールドを検索できないのはなぜですか? 余談ですが、「IdfpTSVopNLB#」列がドキュメント レコードにあることを説明する Luke に関するドキュメントも見つかりません。この情報が役立つ可能性があると考えているので、このフィールドを持つレコードの 1 つで、列の値はIdfpTS---N---で、「ノルム」列は4.0

4

2 に答える 2

2

「IdfpTSVopNLB#」フィールドは、フラグのコレクションです。Luke にキーが表示されます。

ルークが重要な場所にフラグを立てる

検索が失敗する理由は、分析を考慮していないためだと思います。たとえば、次のサンプル クエリField1:parameterValueの場合、フィールドが StandardAnalyzer によって分析される (クエリがアナライザーではないか、キーワード分析される) 場合、結果は得られません。これは、"parameterValue" がアナライザーによって小文字化されたため、実際の検索可能な用語は代わりに "parametervalue" になるためです。

検索タブに、Luke がクエリの解析に使用するアナライザーを選択する場所が表示されます。データのインデックス作成に使用したものと同じアナライザーを使用すると、より良い結果が得られる場合があります。

于 2016-09-21T16:45:50.503 に答える
-1

結局のところ、これが正しい方法です。インデックス全体を削除し、最初から再構築して新しい値を取得する必要がありました。既存のインデックスは自動的に更新されませんでした。

于 2016-09-22T14:30:09.673 に答える