elasticsearch Elasticsearch中的文档频率和空值,elasticsearch,lucene,searchkick,elasticsearch,Lucene,Searchkick" /> elasticsearch Elasticsearch中的文档频率和空值,elasticsearch,lucene,searchkick,elasticsearch,Lucene,Searchkick" />

elasticsearch Elasticsearch中的文档频率和空值

elasticsearch Elasticsearch中的文档频率和空值,elasticsearch,lucene,searchkick,elasticsearch,Lucene,Searchkick,我有一个应用程序,它使用以下elasticsearch自动完成查询,允许用户根据产品名称及其替代名称搜索产品 "query": { "dis_max": { "queries": [ { "match": { "name.autocomplete": { "query": "p",

我有一个应用程序,它使用以下elasticsearch自动完成查询,允许用户根据产品名称及其替代名称搜索产品

        "query": {
          "dis_max": {
            "queries": [
              {
                "match": {
                  "name.autocomplete": {
                    "query": "p",
                    "analyzer": "autocomplete_search",
                    "boost": 3
                  }
                }
              },
              {
                "nested": {
                  "path": "alternate_names",
                  "score_mode": "max",
                  "query": {
                    "match": {
                      "alternate_names.name.autocomplete": {
                        "query": "p",
                        "analyzer": "autocomplete_search"
                      }
                    }
                  }
                }
              }
            ]
          }
        }
所有产品都有名称,但只有大约10%的产品有备用名称(存储为products下的嵌套字段)。尽管我在增强名称上的匹配而不是备用名称上的匹配,但我注意到,有时在键入一个字母后,它会返回备用名称上的匹配而不是名称上的匹配

在使用explain API进行了一些挖掘之后,我发现这是因为计算备用名称的文档频率时使用了匹配文档数/文档总数(如预期的那样)。但是,在这种情况下,结果是不正确的,因为有太多的产品具有空的备用名称。因此,如果10%的产品包含以“p”开头的单词,并且10%的备选名称包含以“p”开头的单词,那么查询认为备选名称上的匹配更相关,因为只有1%的产品具有以“p”开头的备选名称

我想知道是否有人遇到过这个问题,并且知道如何解决它?理想情况下,我不希望在计算文档频率时,将替换名称为空的文档计数作为替换名称匹配项的总文档计数。或者,我可以在这两个字段中使用相同的tf/idf计算,这样就可以根据特定单词的唯一性将备用名称视为其他名称。然而,我一直不知道如何做这些事情