【发布时间】:2018-09-07 19:49:28
【问题描述】:
在 Elasticsearch 5.6.5 中,我正在搜索应用了以下过滤器的字段:
"filter_shingle":{
"max_shingle_size":"4",
"min_shingle_size":"2",
"output_unigrams":"true",
"type":"shingle"
}
当我针对具有该确切文本的文档执行depreciation tax 搜索时,我看到了以下分数解释:
weight(Synonym(content:depreciation content:depreciation tax)) .... [7.65]
weight(content:tax) ... [6.02]
如果我将搜索更改为 depreciation taffy 与内容中包含 depreciation tax 的完全相同的文档,我会得到以下解释:
weight(Synonym(content:depreciation content:depreciation taffy)) .... [7.64]
这不是我所期望的。我认为depreciation tax 的二元标记匹配会比一元标记depreciation 的匹配获得更高的分数。然而,这个得分似乎反映了一个简单的一元匹配。有一个非常小的差异,进一步挖掘这是因为depreciation taffy 下的termFreq=28 匹配,depreciation tax 下的termFreq=29 匹配。我也不确定这有什么关系,因为我想象在持有此文档的分片中,depreciation、depreciation tax 和 depreciation tafffy 的计数非常不同
这是预期的行为吗? ES 是否使用相同的 IDF 值处理所有不同大小的带状疱疹,包括 unigrams?我是否需要使用不同的分析器将每个 shingle 大小拆分为不同的子字段以获得我期望的行为?
【问题讨论】:
标签: elasticsearch search lucene elasticsearch-5 relevance