【发布时间】:2014-07-04 09:25:51
【问题描述】:
我对使用 ngram 的单词进行了部分匹配。如何修改映射以始终支持精确匹配而不是 ngram 标记?我不想修改查询。一个搜索框将搜索多种类型,每种类型都有自己的字段。
例如,假设我正在搜索职位,一个人的头衔是“现场工程师”,另一个人的头衔是“引擎技术员”。如果用户搜索“引擎”,我希望 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 个结果?在不知道 ES 的情况下,我建议你离开它,返回 bot 并让用户选择。
-
不,它返回的列表与我指定的一样大。但是从更大的角度考虑。我的索引有 20000 个项目。我给出的例子将在更大范围内发生。我不能让用户自己选择。
-
您可以为用户提供多种选择,例如10(仍然不用担心订购,因为用户无论如何都可以选择)。如果未列出所需结果,则用户范围缩小。这就是它的工作原理......
-
@MarcellFülöp 这没有抓住问题的重点。我不想忽略这个问题,而是想解决它。把它留给用户不是解决办法。
-
这就是为什么我没有给出答案,只是试图暗示您可能不必要地过于复杂。我理解这个问题和你想要什么,但我不认为这是一个问题,或者除非有一个你还没有想出的非常好的理由,否则值得费心为这几个结果排序.
标签: elasticsearch nest