首页 文章

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

提问于
浏览
7

我有部分匹配与ngrams一起使用的单词 . 如何修改映射以始终支持ngram标记的完全匹配?我不想修改查询 . 一个搜索框将搜索多个类型,每个类型都有自己的字段 .

例如,假设我正在搜索职称,一个人的头衔是“现场工程师”,另一个人是“发动机技师” . 如果用户搜索“引擎”,我希望ES将后者视为更相关 .

我几乎逐字地使用这个映射:https://stackoverflow.com/a/19874785/978622 -Exception:我使用的是一个最小值为3,最大值为11的ngram而不是edge ngram

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

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

1 回答

  • 7

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

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

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

相关问题