k4200’s notes and thoughts

Programmer side of k4200

Solr 4にて、基本はbi-gramだけど、1文字の検索にも対応させる

昔はbi-gramの場合、CJKTokenizerFactory ってのを使っていて、自分が持っているSolr本にもそう書いてあるが、最近は、StandardTokenizerFactory + CJKBigramFilterFactory を使うらしい。詳しくはggrks。

bi-gramの場合、検索クエリーが1文字の場合に対応出来ない。その辺の詳しい話もネット上に色々あるはず。でも、CJKBigramFilterFactory には uni-gram を出力するオプションもあり、それを使うと1文字の検索に簡単に対応できる。schema.xmlのCJKBigramFilterFactoryを使っているところを以下のようにするだけ。詳しくはドキュメントを参照。

<filter class="solr.CJKBigramFilterFactory" outputUnigrams="true" />

後は、indexを再構築すれば完了。

余談

Solr便利っすね。

タイトルに「Solr 4にて」と書いたけど、CJKBigramFilterFactoryが入ったのは3.6から?