你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

Azure 认知搜索中的 moreLikeThis(预览版)

重要

根据补充使用条款,此功能以公共预览版提供。 预览版 REST API 支持此功能。

moreLikeThis=[key]搜索文档 API 中的查询参数,用于查找与文档键所指定文档类似的文档。 当使用 moreLikeThis 生成搜索请求时,使用从最匹配的给定文档中提取的搜索项来生成查询。 然后使用生成的查询来生成搜索请求。 moreLikeThis 参数不能与搜索参数 search=[string] 一起使用。

默认情况下,会考虑所有顶级的可搜索字段的内容。 若要改为指定特定字段,则可使用 searchFields 参数。

复杂类型不支持 moreLikeThis 参数,复杂类型的存在会影响查询逻辑。 如果索引是复杂类型,则必须将 searchFields 设置为 moreLikeThis 循环访问的顶级可搜索字段。 例如,如果索引具有类型为 Edm.String 的可搜索 field1,并且 field2 是具有可搜索子字段的复杂类型,则必须将 searchFields 的值设置为 field1 来排除 field2

示例

以下所有示例均使用快速入门:在 Azure 门户中创建搜索索引中的酒店示例。

简单查询

以下查询会查找其描述字段与 moreLikeThis 参数指定的源文档字段最相似的文档:

GET /indexes/hotels-sample-index/docs?moreLikeThis=29&searchFields=Description&api-version=2020-06-30-Preview

在此示例中,请求会搜索与 HotelId 为 29 的酒店类似的酒店。 还可以使用 HTTP POST 调用 MoreLikeThis,而不是使用 HTTP GET:

POST /indexes/hotels-sample-index/docs/search?api-version=2020-06-30-Preview
    {
      "moreLikeThis": "29",
      "searchFields": "Description"
    }

应用筛选器

MoreLikeThis 可以与其他常见查询参数(如 $filter)组合。 例如,可以将查询限制为仅返回类别为“Budget”且评级高于 3.5 的酒店:

GET /indexes/hotels-sample-index/docs?moreLikeThis=20&searchFields=Description&$filter=(Category eq 'Budget' and Rating gt 3.5)&api-version=2020-06-30-Preview

选择字段并限制结果

$top 选择器可用于限制 MoreLikeThis 查询中应返回的结果数。 此外,还可以使用 $select 选择字段。 此处选择了前三个酒店及其 ID、名称和评级:

GET /indexes/hotels-sample-index/docs?moreLikeThis=20&searchFields=Description&$filter=(Category eq 'Budget' and Rating gt 3.5)&$top=3&$select=HotelId,HotelName,Rating&api-version=2020-06-30-Preview

后续步骤

可以使用任何 Web 测试工具来试验此功能。 建议使用 Postman 完成此练习。