映射时,在ElasticSearch中支持ngram匹配的完全匹配

时间:2014-05-15 18:59:35

标签: elasticsearch nest

我对使用ngrams的单词进行了部分匹配。如何修改映射以始终优先于ngram标记的完全匹配?我不想修改查询。一个搜索框将搜索多个类型,每个类型都有自己的字段。

例如,假设我正在搜索职称,一个人的头衔是#34;现场工程师"另一个人是#34;引擎技师"的头衔。如果用户搜索"引擎",我希望ES将后者视为更相关。

我几乎逐字地使用此映射:https://stackoverflow.com/a/19874785/978622 - 例外:我使用最小值为3,最大值为11而不是边缘ngram的ngram

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

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

1 个答案:

答案 0 :(得分:7)

我不相信无论如何都要按照你的建议对分析仪进行增强。

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

使用此映射,您可以以不同方式查询这两个字段,但可以组合(可能在bool查询中),并对full_name分析字段上执行的查询应用提升。