【发布时间】:2014-06-23 21:22:49
【问题描述】:
我正在将 elasticsearch 集成到资产跟踪应用程序中。当我最初设置映射时,我设想“品牌”字段是像“日立”或“福特”这样的单项字段。相反,我发现实际数据中的品牌字段包含多个术语,例如:“MB 7 A/B”、“B-7”甚至“Brush Bull BB72X”。
我有一个自动完成组件设置,现在我配置为对 edgeNGram 字段执行自动完成,并针对 nGram 字段执行实际搜索。我设置的方式完全没用,因为用户希望搜索结果仅限于自动完成匹配的内容。
关于设置我的映射以支持自动完成和后续搜索这样的多术语字段的最佳方式有什么建议吗?我正在考虑针对关键字字段进行术语查询,或者可能是使用“和”作为运算符的匹配查询?我还必须处理像“B-7”这样的连字符。
【问题讨论】:
-
你想让“Bul”也自动补全到“Brush Bull BB72X”吗?
-
不...现在我认为前缀匹配是一个很好的起点。我现在通过查询 edgeNGram 字段来构建我的自动完成值,然后在用户搜索时对同一字段执行短语前缀查询。似乎正在工作,但我仍在努力。有什么建议吗?
标签: elasticsearch