问题描述
在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