4

我正在尝试设置一个简单的搜索,该搜索将通过自定义排序返回给我简单的结果,我得到的排序根据自定义分数很好。

问题是对于这个查询

"query": {
    "query_string": {
        "query": query_term,
        "fields": ["name_auto"],
    }
}

注意:name_auto 是弹性体上的 Edge N gram 字段

如果查询没有任何意义,我也总是会得到一个结果集。

例子:

我有一个 elastcisearch 索引,其中填充了所有 android 应用程序的名称。如果我搜索人,我会返回与它相关的所有结果,这些结果是按 Play 商店、menans [facebook、facebook messenger、...] 上的评论数量排序的

问题是,当我查询诸如facesomeuselesschars之类的内容时,我仍然得到与以前相同的结果,但可以肯定没有任何内容与“someuselesschars”匹配。

有人可以帮忙吗

4

1 回答 1

4

ElasticSearch 将始终返回与您的查询匹配的结果,即使这些结果的分数很差。由于您的 ngram,您对“facesomeuselesschars”的查询将匹配其中包含“face”的任何内容(例如,查询的前四个字符将匹配索引中的多个标记)。

查询中的其余字符只会降低返回匹配的分数,但不会阻止它被返回。

如果要设置结果必须达到的最低分数,可以使用min_score参数。

于 2013-02-14T14:33:12.950 回答