我有一个带有标准标记生成器的字段,并且文档插入如下:

1个

{
  name : Hello World
}

2
{
  name : Hello World Welcome
}

3
{
  name : Hello World Welcome to the World
}

如何查询“Hello World”并返回所有带有“Hello and World”字样的文档,以及第一个与“Hello World”完全匹配的文档,其得分会更高

最佳答案

您可以像这样简单地实现它:

POST test/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "name": "Hello World"
          }
        }
      ],
      "should": [
        {
          "match_phrase": {
            "name": "Hello World"
          }
        }
      ]
    }
  }
}

第一个match约束将匹配所有三个文档,并且should/match_phrase约束将增强第一个文档,即,它的得分将比其他两个文档略高。

关于elasticsearch - 使用标准分词器进行完全匹配的Elasticsearch,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60333400/

10-13 02:09