ElasticSearch如何在不适定的条件下(如“ b b b b b b b b b b b b b”中的匹配短语“ b b”)计算术语频率?

时间:2019-01-21 07:42:37

标签: elasticsearch

编辑: 我给的不好的例子。我的用例实际上是汉字,即“我我我我我我我我我我”中的短语匹配“我我”。因此,对于那些不熟悉中文搜索引擎的人来说,问题实际上是在“ b b b b b b b b b b b b b”中搜索“ b b”,而不是在“ bbbbbbbbbb”中搜索“ bb”。 我还编辑了标题以避免混淆。

奖金问题:如果使用“短语匹配前缀”代替“ max_expansions = 4”,出现频率是多少?

原始帖子: 假设搜索关键字为“ bb”,文档为“ bbbbbbbbbb”(10个b)。类型被分析,假设“ b”是被索引的“原子”。

我想象文档在内部以如下形式表示:{'b':[0,1,2,3,4,5,6,7,8,9],元数据:{...}}数字是术语“ b”的位置。如果我错了,请纠正我。

根据弹性导引,项频率tf(t in d)= sqrt(频率)。 (https://www.elastic.co/guide/en/elasticsearch/guide/current/scoring-theory.html#tf) 因此,如果将“ bb”与词组中的“ b”相匹配的短语 ,频率是5还是9?

1 个答案:

答案 0 :(得分:0)

使用“标准分析仪”时,“ bbbbbbbbb”将被分析为“ 0:bbbbbbbbb”,而不是{{b':[0,1,2,3,4,5,6,7,8,9 ]。并且搜索“ bb”没有任何结果。如果docs中的短语类似于“ b b b b b b b b b b b”,则{'b':[0,1,2,3,4,5,6,7,8]是正确的。但是如果您再次搜索“ bb”,将不会有任何结果。 但是如果您搜索“ b b”之类的内容,它将分析为“ b”或“ b”,并且文档中的频率为9(可能是9 + 9/2)。

使用此API,您可以查看如何计算分数:

  

获取/ my_index / doc / _search?解释

有关得分的更多信息:

  

https://www.elastic.co/guide/en/elasticsearch/guide/current/scoring-theory.html