在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"
}
}
}
}
我不确定,但可能有必要删除你的索引,重新创建它,放在上面的映射,然后重新索引你的文档。更改映射后重新建立索引是必要的:)。