3

「私の検索では、フィールドから強調表示されたフラグメントが返されます。特定の検索されたドキュメントのそのフィールドで、そのフラグメントがどこで始まりどこで終わるかを知りたいです。」

例えば。

上記の行で「強調表示されたフラグメント」を検索していると考えてください(上記のパラグラフを単一のドキュメントと考えてください)。

フラグメンターを次のように設定しています:

SimpleFragmenter fragmenter = 
            new SimpleFragmenter(30);

GetBestFragmentの出力は次のようになります。"から強調表示されたフラグメントを返します"

上記のテキストでこのフラグメントの開始インデックスと終了インデックスを取得することは可能ですか(開始が 10 で終了が 45 であるとします)。

4

2 に答える 2

1

メソッド getBestFragment を使用すると、ハイライターはその情報を返しません。バックグラウンドで、Highlighter はTokenGroupクラスを使用して、各フラグメントの開始インデックスと終了インデックスを取得します。おそらくそのクラスを使用できます。

于 2010-05-13T19:37:19.793 に答える
0

私はちょうど数ヶ月前にそれをしました。カスタムFormatterEncoderを構築する必要があります。基本的に、ハイライター内では、フォーマッターがハイライト用に選択されたトークンを処理し、エンコーダーが残りのトークンを処理します。あなたの場合、エンコーダーが呼び出されるたびに空を発行する必要があり、フォーマッターが開始インデックスと終了インデックスを発行する必要があります。それらは実際には、強調表示されたパーツの TokenGroup に格納されます。ハイライターは、これらのカスタム フォーマッターとエンコーダーを使用して構築する必要があります。

于 2010-05-13T19:41:26.493 に答える