3つの選択肢があるようだ、kuromoji を使ってみようと思う。具体的な使い方は後程追記。
- CJKAnalyzer で bigram モデル。一文字のクエリが扱えない。未知語に強い。速い。
- JapaneseAnalyzer で lucene-gosen を使う。形態素解析するので bigram と逆の特徴。
- JapaneseAnalyzer で kuromoji を使う。lucene-gosen との違いは、便利な search モード。文の解析で「関西国際空港」は一語として扱ってほしいが、検索では「空港」でも引っ掛かってほしいと思うでしょ?この日本語の合成語的な側面に長さをコストと見做すことで対応するモードを備えていたり、未知語に対して unigram を適用する(拡張 search モード)などがある。
参考:
- CJKAnalyzerクラス | 関口宏司のLuceneブログ
- Kuromojiを調べてみた | @johtani の日記 searchモードについて書かれている。
- Lucene - Wikipedia
- tree-tips: solrの日本語形態素解析の設定 | Apache Solr ※欄の「autoGeneratePhraseQueries を true にすれば終わるよなこれ。」というのがお役立ち情報。さっきの「関西国際空港」の例と逆で、「宇治抹茶ケーキ」という用語で検索した時になるべく「宇治抹茶ケーキ」そのものが出てきてほしいという要望を満たす方法。
- Lucene/SolrのCJKAnalyzerをカスタマイズして遊んでみる カスタマイズの方法。それぞれの具体的なカスタマイズは必要性を感じなかったが方法として参考に。