如何解决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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。