我目前使用的是Elasticsearch 7.13,遇到了一个问题。
假设我们有以下数据:
horse
mouse
chicken
rooster
duck
cow
让我们假设同义词文件有以下条目(即rooster
和chicken
彼此是同义词):
rooster,chicken
MATCH查询将同时返回chicken
和rooster
。
"query": {
"match": {
"animal": "chicken"
}
}
但是下面的前缀查询将只返回chicken
,而不返回rooster
。
"query": {
"prefix": {
"animal": "chic"
}
}
我想要的是用户只输入chic
, Elasticsearch将返回chicken
和rooster
。
是否有办法组合前缀查找同义词
?这是我的设置:
"filter": {
"synonyms_animal": {
"type": "synonym_graph",
"synonyms_path": "synonyms_animal.txt",
"updateable": "true"
}
}
"analyzer": {
"custom_synonyms": {
"filter": [
"lowercase",
"synonyms_animal"
],
"tokenizer": "whitespace"
}
}
这是我的映射属性部分:
"animal": {
"type": "text",
"analyzer": "some_custom_index_analyzer",
"search_analyzer": "custom_synonyms"
}
发现不能使用搜索时间同义词
您必须使用索引时间同义词才能工作。