前提・実現したいこと
elasticsearch: 6.8
sudachi
elasticsearchを利用して検索エンジンを作っています。
elasticsearchで完全一致検索を行うにはどうすればよいでしょうか。
本文脈で実現したい「完全一致」とは、以下のような挙動です。
- [前提1]"髙橋翔太"がインデックスされている(スカラー値として構造化されたデータ)
- [挙動1]"髙橋翔太"で検索した時にヒットする(単純な完全一致)
- [挙動2]"高橋 翔太"で検索した時にヒットする(空白や高・髙など旧字体等の表記ゆれを吸収)
- [挙動3]"髙橋翔"で検索した時にヒットしない(部分一致は省きたい)
試したこと
- ngramで解析すると、部分一致でヒットしてしまう([挙動3]を満たせない)
- 構文解析で解析すると、名前の解釈が必ずしも正確でない(例:高橋翔虎 ⇒ "高橋" "翔" "虎"と分かち書きされ、高橋翔をフレーズ検索した時に、高橋翔虎にヒットしてしまう [挙動3]を満たせない)
- keyword(term query)だと、一時一句正確に一致していなければヒットせず、[挙動2]を満たせない
よろしくお願いいたします。
あなたの回答
tips
プレビュー