gpt4 book ai didi

Elasticsearch 从查询字符串返回国家

转载 作者:行者123 更新时间:2023-11-29 02:57:12 27 4
gpt4 key购买 nike

我的索引中有一种国家/地区类型,其中包含国家/地区名称列表。我想找到用户可能在他们的查询中输入的任何国家/地区名称。例如,如果用户搜索:

car dealerships in japan

然后我想把日本还给这个国家。如果我做类似的事情,这适用于单个单词的国家:

GET /my_index/country/_search
{
"query": {
"match" : {
"name": {
"query": "car dealerships in japan"
}
}

}
}

这将返回国家 Japan,这正是我想要做的。

但如果国家名称中有多个单词,我不确定如何才能识别出这一点。否则,如果查询类似于:

car dealerships in the united kingdom

它将返回多个国家,例如美国、英国、阿拉伯联合酋长国......但我希望它只返回英国的这个查询。

我不确定解决这个问题的最佳方法。

最佳答案

我建议尝试使用 Elasticsearch 的同义词功能。一个简单的原因是,考虑到您的用户不会一直在查询中使用“美国”或“英国”。如果用户使用“USA”或“us a”或“the states”或“england”怎么办?对于这些情况,您可以使用此功能。

这是一个起点:

{
"settings": {
"analysis": {
"filter": {
"my_synonym_filter": {
"type": "synonym",
"synonyms": [
"u s a,united states,united states of america => usa",
"g b,gb,great britain,united kingdom, uk, u k => britain,england,scotland,wales",
"united arab emirates, emirates, arab emirates => emirates"
]
}
},
"analyzer": {
"my_synonyms": {
"tokenizer": "standard",
"filter": [
"lowercase",
"my_synonym_filter"
]
}
}
}
},
"mappings": {
"country": {
"properties": {
"name": {
"type": "string",
"analyzer": "my_synonyms"
}
}
}
}
}

并且,考虑到您的国家/地区索引中有这些国家/地区:

{ "index": {}}
{ "name": "japan"}
{ "index": {}}
{ "name": "united kingdom"}
{ "index": {}}
{ "name": "united states"}
{ "index": {}}
{ "name": "united arab emirates"}

搜索

{
"query": {
"match": {
"name": {
"query": "car dealerships in the uk, japan and emirates"
}
}
}
}

会给你所有三个国家:

  "hits": [
{
"_index": "my_index",
"_type": "country",
"_id": "CMZe2ygBS4OLL3_lT_B2_Q",
"_score": 0.03739948,
"_source": {
"name": "japan"
}
},
{
"_index": "my_index",
"_type": "country",
"_id": "T-e7rg_rTx-3rtTJYxJrBg",
"_score": 0.03739948,
"_source": {
"name": "united arab emirates"
}
},
{
"_index": "my_index",
"_type": "country",
"_id": "EqlMu2RiRiSdwyqJa2nyzA",
"_score": 0.017334092,
"_source": {
"name": "united kingdom"
}
}
]

如果你只查询一个国家,只会返回一个:

{
"query": {
"match": {
"name": {
"query": "car dealerships in the united states"
}
}
}
}

有关此功能的更多信息 here .

关于Elasticsearch 从查询字符串返回国家,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26206096/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com