バックグラウンド
Solr 4.0.0 を使用しています。一連のサンプル ドキュメントのテキストにインデックスを作成し、Term Vector を有効にして、Fast Vector Highlighting を使用できるようにしました。
<field name="raw_text" type="text_en" indexed="true" stored="true" termVectors="true" termPositions="true" termOffsets="true" />
強調表示には、Break Iterator Boundary Scanner を SENTENCE 境界で使用しています。
<boundaryScanner name="breakIterator" class="solr.highlight.BreakIteratorBoundaryScanner">
<lst name="defaults">
<!-- type should be one of CHARACTER, WORD(default), LINE and SENTENCE -->
<str name="hl.bs.type">SENTENCE</str>
</lst>
</boundaryScanner>
簡単なクエリを実行します
http://localhost:8983/solr/documents/select?q=raw_text%3AArtibonite&wt=xml&hl=true&hl.fl=raw_text&hl.useFastVectorHighlighter=true&hl.snippets=100&hl.boundaryScanner=breakIterator
ハイライトはかなりうまくいっている
<response>
...
<result name="response" numFound="5" start="0">
<doc>
<str name="id">-1071691270</str>
<str name="raw_text">
Final Report of the Independent Panel of Experts on the Cholera
Outbreak in Haiti Dr. Alejando Cravioto (Chair) International
Center for Diarrhoeal Disease Research, Dhaka, Bangladesh Dr.
Claudio F. Lanata Instituto de Investigación Nutricional, and
The US Navy Medical Research Unit 6, Lima, Peru Engr. Daniele
S. Lantagne Harvard University... ~SNIP~
</str>
<doc>
<lst name="highlighting">
<lst name="-1071691270">
<arr name="raw_text">
...
<str>
The timeline suggests that the outbreak spread along
the <em>Artibonite</em> River. After establishing that
the cases began in the upper reaches of the Artibonite
River, potential sources of contamination that could have
initiated the outbreak were investigated.
</str>
...
</arr>
</lst>
</lst>
問題
さらなる処理 (エンティティ抽出など) のために結果の文を送信できるようにしたいのですが、元の (長い) テキスト フィールド内で強調表示された文の開始/終了オフセットを追跡したいと考えています。これを行う簡単な方法はありますか?
フィールド全体を返すように hl.fragsize を設定してから、この方法で目的の文を処理/抽出する方がよいでしょうか?