【发布时间】:2020-12-26 06:04:25
【问题描述】:
我希望将 elasticsearch 用于具有自动完成功能的搜索栏。 我有一组问题,它们有多个变量,我想用其他值替换。
一个问题的模板是:你喜欢FIELDS吗? 用数学、物理、历史代替FIELDS 然后在查询“你喜欢”这个问题时,它会显示多个点击:
- 你喜欢数学吗?
- 你喜欢物理吗?
- 你喜欢历史吗?
我将 elasticseach 视为同义词分析器,并认为它可以用于这个用例,但它似乎不像我预期的那样工作。以下是我目前所拥有的。
创建索引
{
"mappings": {
"properties": {
"my_field": {
"type": "search_as_you_type",
"analyzer": "standard",
"search_analyzer": "synonym_analyzer"
}
}
},
"settings": {
"index": {
"analysis": {
"analyzer": {
"synonym_analyzer": {
"tokenizer": "whitespace",
"filter": ["my_synonyms"]
}
},
"filter": {
"my_synonyms": {
"type": "synonym",
"synonyms": [
"FIELDS => math, physics, history"
]
}
}
}
}
}
}
查询
{
"query": {
"multi_match": {
"query": partial_question,
"type": "bool_prefix",
"fields": [
"my_field",
"my_field._2gram",
"my_field._3gram",
"my_field._index_prefix"
]
}
}
}
结果是一个结果“你喜欢FIELDS吗?”
【问题讨论】:
-
是否可以提供您想要的输出示例?我有些困惑,无法理解。如果我很好地理解了你的问题,如果你搜索一个特定的值,它应该返回“你喜欢数学吗?”与其他热门歌曲[物理和历史]
-
是的,想要的输出是你喜欢数学吗?你喜欢物理吗?你喜欢历史吗?当我有
partial question是“你喜欢吗” -
@Ffloriel ,您能否看一下我的回答,如果您有后续相关问题,请告诉我,如我的回答所示,它解决了相关问题:)
-
@Ffloriel 如果您有后续问题,请告诉我,否则,如果有帮助,请投票并接受答案,在此先感谢 :)
-
@Ffloriel 遗憾的是,赏金也结束了,你没有获得全部赏金,也没有提出后续问题并接受任何答案,希望你一切都好,请尽可能回复。跨度>
标签: elasticsearch elasticsearch-query elasticsearch-7