我在我的网站上有一个搜索页面,我正在搜索名称字段,我需要返回通配符和模糊匹配以及完全匹配;但是,确切的匹配应该在页面上显示得更高,所以我试图确保名称是完全匹配,通配符匹配或模糊匹配,精确匹配提升最高和模糊匹配提升最低 . 通过建议我正在使用dis_max查询,因此对于每个名称字段,我有一个单独的dis_max . 为简单起见,我在下面的示例查询中只包含了我的一个dis_max,但如果我也在first_name上搜索,那么在“first_name”的“must”中我会有第二个dis_max .

{
  "query": {
      "filtered": {
          "query": {
              "bool": {
                  "must": [
                      {
                          "dis_max": {
                              "queries": [
                                  {
                                      "match": {
                                          "last_name": {
                                              "type": "phrase",
                                              "query": "COTTER",
                                              "analyzer": "standard",
                                              "boost": 10000
                                          }
                                      }
                                  },
                                  {
                                      "query_string": {
                                          "query": "COTTER",
                                          "default_field": "last_name",
                                          "boost": 0.05
                                      }
                                  },
                                  {
                                      "match": {
                                          "last_name": {
                                              "query": "COTTER",
                                              "fuzziness": 2,
                                              "boost": 0.001,
                                              "analyzer": "standard",
                                              "fuzziness": 2,
                                              "prefix_length": 1
                                          }
                                      }
                                  }
                              ]
                          }
                      }
                  ]
              }
          }
      }
  }

问题是增强似乎不起作用 . 当我在dis_max中删除后两个查询并且只对“Cotter”执行短语匹配时,我会使用last_name“Cotter”获得结果 . 然而,当我使用所有三个查询时,我得到的第一个结果是“卡特”和“卡德尔”......模糊匹配的排名高于(或等于)完全匹配,即使模糊匹配的提升是0.001和精确匹配的提升是10000.我也分别尝试了0.1和1的值,但得到了相同的结果......似乎无关紧要的是我有多大或多大 .