elasticsearch,dismax,Search,elasticsearch,Dismax" /> elasticsearch,dismax,Search,elasticsearch,Dismax" />

Elasticsearch:Demax增强了don';我好像不工作

Elasticsearch:Demax增强了don';我好像不工作,search,elasticsearch,dismax,Search,elasticsearch,Dismax,我在我的网站上有一个搜索页面,我在其中搜索姓名字段,我需要返回通配符和模糊匹配以及精确匹配;但是,精确匹配应该显示在页面的较高位置,因此我尝试确保名称是精确匹配、通配符匹配或模糊匹配,精确匹配提升为最高,模糊匹配提升为最低。根据建议,我使用的是dis_max查询,因此对于每个名称字段,我都有一个单独的dis_max。为简单起见,我在下面的示例查询中只包含了一个dis_max,但如果我也搜索第一个dis_name,我会在“必须”中为“第一个名称”添加第二个dis_max 问题是,这些助推器似乎不起

我在我的网站上有一个搜索页面,我在其中搜索姓名字段,我需要返回通配符和模糊匹配以及精确匹配;但是,精确匹配应该显示在页面的较高位置,因此我尝试确保名称是精确匹配、通配符匹配或模糊匹配,精确匹配提升为最高,模糊匹配提升为最低。根据建议,我使用的是dis_max查询,因此对于每个名称字段,我都有一个单独的dis_max。为简单起见,我在下面的示例查询中只包含了一个dis_max,但如果我也搜索第一个dis_name,我会在“必须”中为“第一个名称”添加第二个dis_max


问题是,这些助推器似乎不起作用。当我删除dis_max中的后两个查询并只对“Cotter”进行短语匹配时,我得到的结果是姓“Cotter”。然而,当我使用所有三个查询时,我得到的第一个结果是“Carter”和“Carder”。。。模糊匹配的排名高于(或等于)精确匹配,即使模糊匹配的提升为0.001,精确匹配的提升为10000。我也尝试分别使用值0.1和1,但得到了相同的结果。。。我的助推器有多小或多大似乎无关紧要

你的疑问对我有用。我建议您从更大的查询中删除它,只测试这一点——即带有“姓氏”的查询。可能是查询的其他部分会影响总体分数。我正在使用姓氏对其进行测试,然后发布该索引的映射。指定“tie_breaker”参数,如果没有该参数,Disu max query将选择单个最佳匹配字段,而忽略其他字段
{
  "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
                                          }
                                      }
                                  }
                              ]
                          }
                      }
                  ]
              }
          }
      }
  }