0

基本的な検索が機能しており、 を使用して強調表示してFastVectorHighlighterいます。ハイライターに「最適なフラグメント」を要求すると、ここgetBestFragment(s)に記載されているいくつかのオーバーロードから選択できます。私は今、次のような最も単純なものを使用しています。

highlightedText = highlighter.getBestFragment(fieldQuery, searcher.getIndexReader(), 
     scoreDoc.doc, "description", 100)

そのため、「説明」フィールドから一致を強調しています。ただし、私のクエリは別のフィールド「メモ」を検索します。それをハイライトに含めるにはどうすればよいですか?Set<String> matchedFieldsaと oneを取るオーバーロードがありますがString storedField、ドキュメントがわかりません。メソッドのドキュメントには次のように書かれています。

すべてのmatchedFieldsがstoredFieldと同じソースを共有するか、少なくともそのプレフィックスであることが推奨されます。

どういう意味ですか?matchedFields「メモ」と「説明」の文字列にインデックスを付けるにはどうすればよいstoredFieldですか?

4

1 に答える 1

0

その呼び出しは、同じコンテンツの複数のインデックス付きフォームに対して強調表示することを目的としていると思います。つまり、格納されているフルテキスト コンテンツ フィールドが 1 つあるが、検索方法を拡張するためにさまざまな方法でインデックスを作成している場合です。おそらく、標準的な分析を使用する 1 つのインデックス付きフィールド、言語固有のステミングを使用する別のフィールド、ngram を使用する別のフィールド、および別のインデックス メタフォンを使用している可能性があります。

2 つの異なる格納されたフィールドを強調表示する場合は、2 つの呼び出しが必要にgetBestFragmentなります。PostingsHighlighterまたは、たとえば、複数の格納されたフィールドを同時に強調表示できる別の蛍光ペンを使用することもできます。

于 2014-07-29T17:17:09.647 に答える