首页 新闻 会员 周边

elasticsearch中的phrase suggester怎么做条件过滤?

0
悬赏园豆:10 [待解决问题]

单一索引中存储了多店铺的数据。我希望在使用phrase suggester(或Term suggester)的过程中进行店铺过滤,只搜索单个店铺的建议词结果数据。
目前只知道Context Suggester可以设置上下文信息进行过滤。那phrase suggester和Term suggester是怎么做到店铺过滤的呢?

www探路者的主页 www探路者 | 初学一级 | 园豆:192
提问于:2023-07-26 11:38
< >
分享
所有回答(2)
0
快乐的凡人721 | 园豆:3955 (老鸟四级) | 2023-07-26 12:52

官网没找到答案才来问的

支持(0) 反对(0) www探路者 | 园豆:192 (初学一级) | 2023-07-26 18:10

@www探路者:
只搜索单个店铺的建议词结果数据

真是需求——提高查询效率。
要不要做模块重新设计?
看起来不像是个 分页查询,各个店铺的放缓存咯

支持(0) 反对(0) 快乐的凡人721 | 园豆:3955 (老鸟四级) | 2023-07-26 18:15

真是需求》真实需求

支持(0) 反对(0) 快乐的凡人721 | 园豆:3955 (老鸟四级) | 2023-07-26 18:16
0

在Elasticsearch中,Phrase Suggester和Term Suggester本身并不直接支持条件过滤,它们主要用于提供搜索建议。但是,您可以通过使用上下文信息或其他一些技巧来实现店铺的过滤。

Context Suggester: 首先,您提到了Context Suggester,它是一个可以用来过滤搜索建议的方法。您可以通过上下文信息(context)来限制搜索建议的范围。在您的情况下,您可以为每个店铺设置一个上下文,然后在执行搜索建议时,将店铺上下文作为过滤条件传递给Phrase Suggester或Term Suggester。这样,您就可以确保搜索建议仅针对特定的店铺。

Indexing数据时设置字段: 如果Phrase Suggester或Term Suggester使用的字段可以标识属于哪个店铺,那么您可以在索引数据时将店铺信息存储在一个字段中。然后,在执行搜索建议时,您可以通过设置该字段的条件来过滤搜索建议结果,以仅返回特定店铺的建议。

使用Filtered Query: 作为搜索建议的替代方案,您可以使用Filtered Query。Filtered Query允许您指定一个过滤条件,并在查询结果中仅返回满足该过滤条件的文档。在执行搜索建议时,您可以将Filtered Query应用于查询,以过滤只针对特定店铺的文档进行搜索建议。

使用Function Score Query: Function Score Query也是一种可以用来自定义评分和过滤的查询方式。您可以为每个文档分配一个得分,并使用Function Score Query来限制只返回满足特定得分范围的文档作为搜索建议的结果。

无论您选择哪种方法,目标都是确保只返回特定店铺的搜索建议结果。具体使用哪种方法取决于您的数据结构和业务需求。根据情况,您可能需要在索引时设置特定字段、使用Context Suggester、Filtered Query或Function Score Query来实现店铺过滤。

Technologyforgood | 园豆:5992 (大侠五级) | 2023-07-26 20:29
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册