弹性搜索结果不相关



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

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

在doc2中,我将CategoryMjor设置为"Restaurants Restaurant Restaurantes RestaurantsRestaurants-"

如果我搜索分类专业:餐厅,doc1会显示为比doc2更相关。这不是典型的Lucene行为,一个术语出现的次数越多,相关性就越强。doc2应该比doc1更相关。

我该怎么解决这个问题?

您可以添加&explain=true,以查看doc2的分数降低了"fieldNorm"因子。这是由默认的lucene相似性计算公式引起的,该公式会降低较长文档的分数。请阅读关于默认lucene相似性公式的文档:

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

要禁用此行为,请通过向发送PUT请求,将CategoryMjor字段的"omit_forms=true"添加到索引映射中

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

带有请求主体:

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

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

最新更新