スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Solr 1.4 → 3.1 への移行について。

始めて、プログラムについてのエントリー。

solr.jpg

Solrはapacheライセンスの全文検索エンジン。3月の知らない間に、3.1がリリースされておりました。

3.1の目玉は、なんといっても、高速ハイライター。今までどうしようもなく遅かったハイライト処理ですが、3.1で劇的に早くなってます。

Solr 1.4 → 3.1 への移行について。


 
※以下、タグは全角の「<」「>」を使っていますので、コピー注意。

schema.xmlで、termVectors,termPositions,termOffsetsをtrueにする。
(FastVectorHighlighterのために、単語の位置情報を事前に記憶しておく)
<field name="title"   type="text"
termVectors="true" termPositions="true" termOffsets="true" />
<field name="content" type="text" multiValued="true"
termVectors="true" termPositions="true" termOffsets="true" />



solrconfig.xmlで、「colored」という名前の多色ハイライト(ScoreOrderFragmentsBuilder)を用意する。
(デフォルトで用意されています。名前が「colored」であることに注意)
<!-- multi-colored tag FragmentsBuilder -->
<fragmentsBuilder name="colored"
class="solr.highlight.ScoreOrderFragmentsBuilder">
<lst name="defaults">
<str name="hl.tag.pre"><![CDATA[
<b style="background:yellow">,
<b style="background:lawgreen">,
<b style="background:aquamarine">,
<b style="background:magenta">,
<b style="background:palegreen">,
<b style="background:coral">,
<b style="background:wheat">,
<b style="background:khaki">,
<b style="background:lime">,
<b style="background:deepskyblue">,
]]></str>
<str name="hl.tag.post"><![CDATA[</b>]]></str>
</lst>
</fragmentsBuilder>



Javaコードの中で、FastVectorHighlighterをtrueにする。
また、多色ハイライトをセットする(名前「colored」)
SolrQuery query;
query.set("hl.useFastVectorHighlighter", "true");
query.set("hl.fragmentsBuilder", "colored");



最後に、FastVectorHighlighterは「数値文字参照」で結果を返してきます。
org.apache.commons.lang3.StringEscapeUtils#unescapeXmlを使って戻します。
StringEscapeUtils.unescapeXml(highlight_str);

2011/06/01 : @shinobu_aoki さんに、「Solr3.1のHighlighterで数値文字参照にならないようにする」方法を教えていただきました!
感謝感謝です!

2011/06/03 : solrconfig.xmlから、以下のencoder部分を削除するだけでも、OKなようです。
<!-- Configure the standard encoder -->
<encoder name="html" default="true"
class="solr.highlight.HtmlEncoder" />


スポンサーサイト

コメントの投稿

非公開コメント

検索フォーム
RSSリンクの表示
リンク
exabugsをフォローしましょう
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。