【问题标题】:ElasticSearch results aren't relevantElasticSearch 结果不相关
【发布时间】:2012-09-08 15:40:20
【问题描述】:

在 ElasticSearch 中,我创建了两个包含一个字段“CategoryMajor”的文档

在 doc1 中,我将 CategoryMajor 设置为“Restaurants”

在 doc2 中,我将 CategoryMajor 设置为“Restaurants Restaurants Restaurants Restaurants Restaurants”

如果我搜索 CategoryMajor:Restaurants,则 doc1 显示为比 doc2 更相关。这不是典型的 Lucene 行为,它给出的相关性越多,术语出现的次数就越多。 doc2 应该比 doc1 更相关。

我该如何解决这个问题?

【问题讨论】:

    标签: elasticsearch


    【解决方案1】:

    您可以将 &explain=true 添加到您的 GET 查询中,以查看 doc2 的分数降低了“fieldNorm”因子。这是由默认的 lucene 相似度计算公式引起的,它会降低较长文档的分数。请阅读有关默认 lucene 相似度公式的文档:

    http://lucene.apache.org/core/3_6_0/api/all/org/apache/lucene/search/Similarity.html

    要禁用此行为,请将 CategoryMajor 字段的“omit_norms=true”添加到您的索引映射,方法是将 PUT 请求发送到:

    http://localhost:9200/index/type/_mapping
    

    带有请求正文:

    {
        "type": {
             properties": {
                "CategoryMajor": {
                    "type": "string",
                    "omit_norms": "true"
               }
            }
        }
    }
    

    我不确定,但可能需要删除您的索引,重新创建它,放置上面的映射,然后重新索引您的文档。更改映射后重新索引肯定是必要的:)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-12
      • 1970-01-01
      相关资源
      最近更新 更多