我对使用ngram的单词有部分匹配。我如何修改映射以始终偏爱精确匹配而不是ngram token ?我不想修改查询。一个搜索框将搜索多种类型,每种类型都有自己的字段。

例如,假设我正在搜索职位,一个人的标题为“现场工程师”,另一个人的标题为“引擎技术员”。如果用户搜索“引擎”,我希望ES将后者返回为更相关。

我几乎逐字使用此映射:https://stackoverflow.com/a/19874785/978622
-异常(exception):我正在使用最小为3且最大为11的ngram,而不是边缘ngram

是否可以对分析仪应用提升/功能评分?如果是这样,我也将“full_name”和“partial_name”分析器都应用于我的索引,并提升第一个。

编辑:我正在使用ElasticSearch 1.1.1和Nest 1.0.0 beta

最佳答案

我不相信您会建议对分析仪进行增强。

您可以尝试的一件事是在映射中使用multi field类型。然后,您可以将partial_name分析器应用于该字段的一个版本,并将full_name分析器应用于另一版本。

使用此映射,您可以对两个字段进行不同的查询,但可以进行组合(可能是在 bool 查询中),并对在full_name分析的字段上进行的查询应用增强功能。

关于elasticsearch - 映射时在ElasticSearch中优先于ngram匹配进行完全匹配,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23686577/

10-11 08:51