首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在某些查询中忽略边缘NGrams

在某些查询中忽略边缘NGrams
EN

Stack Overflow用户
提问于 2018-11-12 04:19:16
回答 1查看 173关注 0票数 1

我跟踪本指南创建了一个自动完成搜索.我要做的是使用边缘NGram标记器,标记我的一个字段(标题)。我使用这些边缘NGrams进行自动完成搜索这是我的解决方案

自动完成的工作很好.但它破坏了我的搜索功能..。因为现在当我使用我的主搜索(不是自动完成)时,它仍然搜索NGrams.例如,如果我搜索" Ski ",结果将同时包含Ski和裙子。对于我的主要搜索,我不希望裙子是匹配的搜索滑雪板。

是否可以将弹性搜索配置为在某些查询中忽略边缘NGrams,而在其他查询中使用它们?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-12 06:46:52

我有一个类似的要求,但在我的应用程序自动完成是不同的主要搜索。当用户键入时自动完成,当用户按enter键时发生主搜索.

在我们的应用程序中,自动完成搜索结果和主要搜索结果是不同的,因为在您的情况下,这是一个要求。这也是一种普遍的做法。

如何解决这个用例:-

  1. 对于自动完成而不是索引时间,我们使用的是https://www.elastic.co/guide/en/elasticsearch/guide/master/prefix-query.html,有优缺点b/w做这个索引时间和查询时间。
  2. 对于主搜索,它不使用前缀搜索,因此部分搜索不会发生。

示例 1。如果标题字段包含foobarhelloworld等前缀搜索,则会为ffo带来结果,而不是oo。如果您希望oo是可搜索的,那么您需要使用两个不同的字段进行自动完成和主搜索,这是唯一的解决方案。否则,只需在自动完成的情况下将查询类型更改为前缀,在这种情况下,索引大小也会非常小。我们做了一些测试,如果我们使用的边缘-N克令牌,然后它是增加我们的索引大小翻倍,这不是我们的选择,因为我们有非常大的索引。

编辑如果您想要一个子字符串搜索,对于术语runni,希望标题New Balance Running Shoes应该出现在搜索结果中,那么我建议您创建两个字段,如title_autocomplete,它使用edge n-gram分析器,用于自动完成查询,标题使用其他分析器,如标准或其他解决主要搜索用例的方法。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53255916

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档