1

基于用户在 UI 上搜索的文本,我在搜索条件中添加了更多搜索词。所有这些工作正常,但是我无法获得正确的排序结果。

我的期望是按以下顺序排序结果:

  1. 顶部的结果应基于用户实际输入的搜索词。
  2. 接下来是我在代码中添加的其他搜索词的结果。
4

2 回答 2

0

这样的排序是不可能的。根据官方文档

排序是在每个字段级别上定义的......

因此,您无法按搜索词对结果进行排序。

query string查询的情况下,您可以提升用户实际输入的术语,因此具有此类术语的文档将更具相关性,并且默认情况下在搜索结果中显示高于其他文档。但这绝对不是排序。

于 2020-01-26T13:38:00.827 回答
0

我认为您正在寻求方法来控制 ElasticSeach 中搜索结果的所谓“相关性”(默认情况下,结果按相关性排序)。其中有几种,您必须进行试验以查看哪一种适合您的需求。他们每个人都将提升因子应用于结果的正常相关性分数:

快速^2狐狸

将为包含“快速”的文档提供更多相关性

    GET /_search 
    {
        "query": {
            "query_string" : {
                "query" : "(new york city) OR (big apple)",
                "default_field" : "content",
                "boost": 2.0
            }
        } 
    }
    {
        "query": {
            "boosting": {
                "positive": {
                    "term": {
                        "text": "apple"
                    }
                },
                "negative": {
                    "term": {
                        "text": "pie tart fruit crumble tree"
                    }
                },
                "negative_boost": 0.5
            }
        }
    }
于 2020-01-26T14:19:30.567 回答