gpt4 book ai didi

elasticsearch - 在_all上使用全文搜索时,如何为特定字段名称的Elasticsearch匹配评分更高?

转载 作者:行者123 更新时间:2023-12-03 01:55:18 25 4
gpt4 key购买 nike

我设置了一个索引,该索引具有许多表示用户数据的类型,例如ShoppingList,Playlist等。每种类型都有一个用于用户唯一标识符的“identity_id”字段。我使用以下查询在用户的所有类型和字段中进行搜索(用于网站中的搜索功能):

GET _search
{
"query": {
"filtered": {
"query": {
"match_phrase_prefix": {
"_all": "awesome"
}
},
"filter": {
"match": {
"identity_id": 1
}
}
}
}
}

我的问题是:
  • 是否可以为字段名称中具有“名称”的字段提供更高的分数?例如,ShoppingList类型将具有shopping_list_name字段,而我希望对此进行匹配以使其比其他字段更高。
  • 以上是对特定用户进行全文搜索(查询然后过滤)的最有效方法吗?如何为每个用户创建索引呢?
  • 最佳答案

    这个查询如何提升某些字段:

    {
    "query": {
    "function_score": {
    "query": {
    "multi_match": {
    "query": "awesome",
    "fields": [
    "*_name",
    "field*"
    ]
    }
    },
    "functions": [
    {
    "weight": 2,
    "filter": {
    "multi_match": {
    "query": "awesome",
    "fields": [
    "*_name"
    ]
    }
    }
    },
    {
    "weight": 1,
    "filter": {
    "multi_match": {
    "query": "awesome",
    "fields": [
    "field*"
    ]
    }
    }
    }
    ]
    }
    }
    }

    上面的查询所做的是增强( weigth: 2) *_name字段查询,而不是对称为 field*的字段进行任何增强。

    Is the above way of doing a full text search for a particular user (query then filter) the most efficient way? What about creating an index per user?



    关于这个^问题,这更加复杂,您还需要考虑拥有多少用户,集群拥有的硬件资源,数据结构,使用的查询等。

    关于elasticsearch - 在_all上使用全文搜索时,如何为特定字段名称的Elasticsearch匹配评分更高?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37216016/

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