未找到任何内容时,通过另一个字段进行搜索

时间:2018-09-13 08:11:09

标签: elasticsearch nest relevance

假设我有两个文本字段的索引:

"properties" : {
   "name" : {
      "type" : "text"
    },
    "description" : {
      "type" : "text"
    }
}

我需要优先通过这两个字段来实现全文搜索。首先是名字,然后是描述。关键是,如果我已经按名称找到了某些内容,则无需在描述中进行搜索。我可以实现两个查询,并检查按名称搜索是否返回0结果,而不是按描述搜索。但是有没有办法通过单个查询实现它?

UPD。我的查询非常简单:

"query": {
  "bool": {
    "should": [
      {
        "match": {
          "name": {
            "query": "some user input here",
            "operator": "and"
          }
        }
      },

      {
        "match": {
          "description": {
            "query": "some user input here",
            "operator": "and"
          }
        }
      }
    ]
  }
}

改进的问题是,如何将单个查询的结果分为两组:按名称匹配的人和按描述匹配的人?第一组应得分高于第二组。我需要知道两个组的总数才能在应用程序中实现分页行为。因此,当第一组为空时,我将显示第二组,但不仅限于此。否则,我将向用户隐藏第二个组。此外,在组内应该有(由提供的分析器提供的)相关性评分,以便为用户提供合理的搜索结果。

0 个答案:

没有答案