gpt4 book ai didi

elasticsearch - 全文搜索的字段优先级

转载 作者:行者123 更新时间:2023-12-02 23:05:25 25 4
gpt4 key购买 nike

在某些情况下,我的产品会被描述,并且使用以下结构:

{
"defaultDescription" : "Default Description",
"i18nDescription" : {
"pt" : "Descrição Padrão",
"de" : "Standard-Beschreibung"
}
}

现在,我有以下要求:按照优先语言列表(3种语言)执行搜索。如果第一语言不在 i18nDescription中,请仅使用第二种语言;如果第二语言不在那儿,请仅使用第三种,否则与 defaultDescription匹配。

我的解决方案是这样的:
// suppose request comes with the following languages: en, de, pt
{
"size":10,
"fields" : ["defaultDescription", "i18nDescription.en^50", "i18nDescription.de^20", "i18nDescription.pt^10"],
"query": {
"multi_match" : { "query" : "default", "fields" : ["description","descriptions.fr-CA"] }
}
}

但是此解决方案只会按优先级语言对结果进行排序,我想做些类似的事情: i18nDescription.en:search OR (i18nDescription.de:search AND _empty_:i18nDescription.en) OR (i18nDescription.pt:search AND _empty_:i18nDescription.en AND _empty_:i18nDescription.de) OR (description:search AND _empty_:i18nDescription.pt AND _empty_:i18nDescription.en AND _empty_:i18nDescription.de)
有没有办法表示这是一个ElasticSearch查询?

最佳答案

玩一些 bool(boolean) 查询,我们可以达到预期的效果。

基本上,它需要检查一个字段是否包含文本,而其他字段(更重要)是否为空,因此它只会考虑最重要的当前字段。

查询将类似于:

{
"size":10,
"query": {
"bool" : {
"should" : [
{
"bool" : {
"must" : [
{ "multi_match" : { "fields":["defaultDescription"], "query" : "default" } },
{ "query_string" : { "query" : "+_missing_:i18nDescription.en +_missing_:i18nDescription.de +_missing_:i18nDescription.pt" } }
]
}
},
{
"bool" : {
"must" : [
{ "multi_match" : { "fields":["i18nDescription.pt"], "query" : "default" } },
{ "query_string" : { "query" : "+_missing_:i18nDescription.en +_missing_:i18nDescription.de" } }
]
}
},
{
"bool" : {
"must" : [
{ "multi_match" : { "fields":["i18nDescription.de"], "query" : "default" } },
{ "query_string" : { "query" : "+_missing_:i18nDescription.en" } }
]
}
},
{
"bool" : {
"must" : [
{ "multi_match" : { "fields":["i18nDescription.en"], "query" : "default" } }
]
}
}
]
}
}
}

关于elasticsearch - 全文搜索的字段优先级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18515178/

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