elasticsearch Azure搜索-如何实现多方面搜索?

yr9zkbsy  于 2023-01-25  发布在  ElasticSearch
关注(0)|答案(3)|浏览(135)

例如,如果我们有类别方面,它返回了5个不同的类别,点击第一个类别,其他类别将不会在响应中可用。我想实现多方面的搜索。感谢您的回应。
欲了解更多信息,我指的是相同的情况如下:https://feedback.azure.com/forums/263029-azure-search/suggestions/7762452-provide-multiselect-facets

uubf1zoe

uubf1zoe1#

响应中的facet仅限于所选的,并且不支持此功能。我建议在这里投票https://feedback.azure.com/forums/263029-azure-search/suggestions/7762452-provide-multiselect-facets
一种解决方法是发送多个查询以分别获取facet和过滤结果。
例如,1.在第一搜索查询之后,将所有方面保持在UI中(或进行另一查询以获得所有方面);2.假设应用跟踪用户已经选择了什么分面,则在选择了另一方面面之后进行另一搜索查询。

r8xiu3jd

r8xiu3jd2#

如果你想要到过滤结果与多个方面,你可以修改你的过滤器如下:

$filter = search.in(country, 'USA,Canada,Mexico,Brasil,Chile,Argentina', ',')

www.example.com函数的第一个参数search.in是字符串字段引用(或者在任意或全部表达式内使用search.in的情况下是字符串集合字段上的范围变量)。第二参数是包含值列表的字符串,由空格和/或逗号分隔。如果由于值中包含空格和逗号以外的字符而需要使用分隔符,您可以为search.in指定可选的第三个参数。此第三个参数是一个字符串,在解析第二个参数中的值列表时,该字符串的每个字符或该字符串的子集都被视为分隔符。

有关Azure Search中筛选器和order-by子句的OData表达式语法的详细信息,请参阅本教程。

inn6fuwd

inn6fuwd3#

我最近遇到了这个限制,我的解决方法是按照上面@rudin的建议为每个方面运行一个单独的查询。
例如,您的应用程序包含颜色、品牌和尺寸方面。您的主要搜索查询包含所有三个筛选器,但不返回任何方面。然后,您运行一个忽略任何选定颜色的附加查询,这将为您提供所选品牌和尺寸的所有可用颜色值,并对品牌和尺寸方面执行相同的操作。
对于其他查询,将“Size”属性设置为0非常重要,这样就不会返回搜索结果-只返回相关的方面。
通过这样做并异步运行这些查询,性能开销在我的6个方面的情况下是最小的。

相关问题