【问题标题】:Azure Cognitive Search: How to boost a filterAzure 认知搜索:如何提升筛选器
【发布时间】:2020-12-14 17:20:31
【问题描述】:

在 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, '123, 456, 789'))^2

但是 (1) 过滤器的提升似乎不起作用,并且 (2) 这将仅限于属于组 123,456,789 的文档。我希望它只在属于它的情况下提升,但不仅限于这些群体。

这可能吗?

我看过“标签提升”:https://azure.microsoft.com/en-au/blog/personalizing-search-results-announcing-tag-boosting-in-azure-search/

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

更新:

我想我已经想通了:

search=mysearchterm AND (group_id:123)^2

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

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

【问题讨论】:

  • 听起来你的问题的标题应该是“如何通过过滤器提升”。通过过滤器提升是一个常见的用例。例如,当您有一个包含多种文件类型的存储库并且您想要提升某种类型的文件时。

标签: azure azure-cognitive-search azure-cognitive-services


【解决方案1】:

过滤器旨在通过过滤掉不符合过滤条件的文档来限制您的结果集。此过程发生在术语匹配和评分之前。鉴于这不是您想要做的,我认为过滤器不是适合这项工作的工具。

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

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

【讨论】:

    猜你喜欢
    • 2021-03-06
    • 2023-04-09
    • 1970-01-01
    • 2022-07-05
    • 2021-06-01
    • 1970-01-01
    • 2021-09-02
    • 2020-05-20
    • 2020-03-27
    相关资源
    最近更新 更多