FastVectorHighlighterとSynonymFilter
Solrで、SynonymFilterを使ってクエリ時にキーワード展開を試してみた。
ところが、検索結果のスニペットがSolrから空っぽでかえってくる。
調査してみると、以下の条件で問題が起こる。
- CJKTokenizerなどのN-Gramトークンを使っている
- SynonymFilterの設定でexpand属性をtrueにしている
- SynonymFilterをクエリ時に指定している
- 双方向展開( => ではなくて カンマで区切って互いに展開する)を指定しているキーワードで検索する
- 旧HighliterではなくFastVectorHighlighterを利用している
solr-userで質問したところ、以下が原因ではないかと教えていただいた。
- クエリ時にキーワード展開を行うと、MultiPhraseQueryが生成される
- MultiPhraseQueryにFastVectorHighlighterは対応していない
これを受けて、これで解決した。
- SynonymFilterのキーワード展開をクエリ時ではなくインデックス時に行うように設定
本当はシノニムの設定を変更したらすぐに反映したかったので、
クエリ時にしたかったのだが、仕方がない。
MultiPhraseQueryにFVHが対応していない件は以下のissueでopenされている。
https://issues.apache.org/jira/browse/LUCENE-1889
あとで、MultiPhraseQueryでFVHしようとしたらwarningするようにpatchを書こう。