TokenFilter : kuromoji_part_of_speech
このフィルターは指定された品詞を除外するためのフィルターです。NOTE:
デフォルトは、lucene-analyzer-kuromoji.jar に含まれる stoptags.txt に設定されている品詞が除外されます。※ 特殊な場合をのぞいてデフォルトのままで良さそうです。
個別に設定するには、次のようにします。設定サンプル: 助詞-格助詞-一般、助詞-終助詞 を除外
index:
analysis:
filter:
pos_filter:
type: kuromoji_part_of_speech
stoptags: [助詞-格助詞-一般, 助詞-終助詞]
tokenizer:
ja_tokenizer:
type: kuromoji_tokenizer
mode: search
analyzer:
ja:
type: custom
tokenizer: ja_tokenizer
filter: [pos_filter]
という記述を見て、サンプルコードそのまま「stoptags: [助詞-格助詞-一般, 助詞-終助詞]」を設定してしまった人居ませんか?(自社のプロジェクトで居ました)。こうするとデフォルトの除外品詞の設定を上書きしてしまうため、検索結果に微妙なテキストが混入する可能性があります。
今回は、「だ」で検索するとなぜか「だ」を含まずに「な」を含むテキストがヒットしたため判明しました。
用言の活用を終止形に直して格納するフィルタも同時にセットしてあったため、「な」が、助動詞「だ」の連体形「な」として解釈され、インデックスに格納されていたのが原因だったようです。
本来デフォルトのままでよかったところを、「個別に設定する」ためのサンプルを使ってしまったということで。
結論としてはよく読めと。