Elasticsearch:7.3.0です。
phrase検索時、synonym_graphで展開された類義語がfvhでhighlightされません。
下記の検索クエリにおいて、いずれかの部分を書き換えるとハイライトがつきます。
・単純なMatchクエリでは、類義語もfvhでhighlightされる。(match_phrase→match)
・類義語以外はfvhでhighlightされる。("value": "ケータイ"→"value": "製品")
・typeがunifiedやplainではhighlightされる。("type": "fvh"→"type": "unified")
設定等に誤りがあるようであれば、ご指摘いただけると幸いです。
※問題を簡略化するために省いていますが、highlightでmatched_fieldsを使いたいため、fvhを使用しています。
以下、設定とデータ投入、検索クエリです。
・設定
PUT test/
{
"settings": {
"index": {
"number_of_shards": "1",
"number_of_replicas": 0,
"analysis": {
"filter": {
"synonym_graph": {
"type": "synonym_graph",
"synonyms": [
"ケータイ,携帯電話"
]
}
},
"analyzer": {
"kuromoji": {
"type": "custom",
"tokenizer": "kuromoji_tokenizer"
},
"kuromoji_synonym_graph": {
"type": "custom",
"tokenizer": "kuromoji_tokenizer",
"filter": [
"synonym_graph"
]
}
}
}
}
},
"mappings": {
"properties": {
"value": {
"type": "text",
"analyzer": "kuromoji",
"search_analyzer": "kuromoji_synonym_graph",
"term_vector": "with_positions_offsets"
}
}
}
}
・データ投入
POST test/_doc/
{
"value":"ケータイ(フィーチャーフォン)の製品紹介ページ。"
}
POST test/_doc/
{
"value":"スマートフォン(スマホ)・携帯電話・モバイルのページ。"
}
POST test/_doc/
{
"value":"普段電話をポケットに入れて携帯しています。"
}
・検索クエリ
GET test/_search
{
"query": {
"match_phrase": {
"value": "ケータイ"
}
},
"highlight": {
"order": "score",
"fragment_size": 100,
"number_of_fragments": 1,
"fields": {
"value": {
"type": "fvh"
}
}
}
}
・レスポンス
{
"took" : 1,
"timed_out" : false,
"_shards" : {
"total" : 1,
"successful" : 1,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : {
"value" : 2,
"relation" : "eq"
},
"max_score" : 2.2241263,
"hits" : [
{
"_index" : "test",
"_type" : "_doc",
"_id" : "EIADUGwBPMnEznS6qQ_M",
"_score" : 2.2241263,
"_source" : {
"value" : "ケータイ(フィーチャーフォン)の製品紹介ページ。"
}
},
{
"_index" : "test",
"_type" : "_doc",
"_id" : "EYADUGwBPMnEznS6rw9p",
"_score" : 1.9208363,
"_source" : {
"value" : "スマートフォン(スマホ)・携帯電話・モバイルのページ。"
}
}
]
}
}