ElasticSearch结果不相关

时间:2012-09-07 17:55:30

标签: elasticsearch

在ElasticSearch中,我创建了两个带有一个字段的文档," CategoryMajor"

在doc1中,我将CategoryMajor设置为" Restaurants"

在doc2中,我将CategoryMajor设置为"餐厅餐厅餐厅餐厅"

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

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:4)

您可以在GET查询中添加& explain = true,以查看doc2的得分是否被“fieldNorm”因素降低。这是由默认的lucene相似度计算公式引起的,该公式降低了较长文档的分数。请阅读本文档关于默认lucene相似性公式:

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

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

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

请求正文:

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

我不确定,但可能需要删除索引,再次创建索引,置于上方映射,然后重新索引文档。改变映射后重新索引是必要的:)。