Elasticsearch的相关性如何实现最佳?

时间:2016-11-22 08:10:10

标签: elasticsearch

我使用Elasticsearch来开发项目

项目需要使用数据包聚合和搜索,ES功能非常好用,满足我的所有需求,但我感到困惑的是ES的相关性

例如,我有这些索引:

Cd54 prodoct
Cd59 product
Cd58 product
Cd50 product
Cd5 product
Cd 5 product
Cd55 prodcut
Cd55 other product
Thcd5 prodcut

搜索关键字:cd5

我想要的那种是:

Cd5 product
Cd55 product
Cd55 other product
Thcd5 product
Cd50 product
...

并且不显示cd 5产品

我制定了以下策略:

设置自定义过滤器auto_ngram_filter

Open nGram, min_gram = 1, max_gram = 20, token_chars = [ "post", "digit", "punctuation", "symbol", "whitespace"]

自定义分析器

type = custom, filter = [ "standard", "lowercase", "filter auto_ngram_filter"]

映射设置如下:

Index_options = offsets,
Similarity = bm25
Analyzer = my_analyzer,
Include_in_all = true,
Term_vector = with_positions_offsets_payloads

实际的_score排序是:

Cd58 product
Cd59 product
Cd54 product
Cd50 product
Cd55 product
Cd55 other product
Cd5 product
Thcd5 product

我不明白,如果计算的值是不正确的值,因为docfreq = 1, doccount = 1。如果是计算项,这是大部分数据,但该部分确实是docfreq = 2, doccount = 2?如何获得这些结果?

根据ES官方文件,单词越短,重量越高,但实际上并非如此,而且完美匹配并没有得到高分。

如何设置以实现我的目标?尝试了很多方法并且无法解决问题,我需要你的帮助,如果你知道如何解决这个问题,请告诉我,非常感谢你!

0 个答案:

没有答案