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を書こう。