Azure认知搜索:如何增强筛选器

问题描述

在Azure搜索中,您可以使用first term || secondterm^2增强查询的特定部分的权重。

您还可以使用search.in()https://docs.microsoft.com/en-us/azure/search/search-query-odata-search-in-function

过滤属于特定组的文档。

$filter=group_ids/any(g: search.in(g,'123,456,789'))

我想做的是增强文档,如果它属于一个组但不仅限于属于该组的文档。

类似的东西:

search=mysearchterm^3&$filter=group_ids/any(g: search.in(g,789'))^2

但是(1)提升过滤条件似乎无效,(2)这将仅限于属于123,789组的文档。我希望它仅在属于它的情况下才增强,但不仅限于那些群体。

这可能吗?

我看过“ Tag Boosting”:https://azure.microsoft.com/en-au/blog/personalizing-search-results-announcing-tag-boosting-in-azure-search/

但这似乎并不相关,似乎只能标记boost顶级字符串字段,而不是集合中的字符串或int字段。

更新:

我认为我认为是:

search=mysearchterm AND (group_id:123)^2

如果您使用的是复杂集合,则可能是:

search=mysearchterm AND (groups/id:123)^2

解决方法

过滤器旨在通过过滤出不符合过滤条件的文档来限制结果集。此过程发生在词语匹配和计分之前。鉴于这不是您要尝试做的事情,我认为过滤器不是完成这项工作的正确工具。

您可以尝试制作包含您所描述的逻辑的Lucene查询:

mysearchterm OR (mysearchterm AND group_ids:(123 OR 456 OR 789))^2