Azure 搜索不支持 DisMax 查询。根据您对 DisMax 查询的需求,您可以通过其他方式获得类似的结果。
从召回的角度来看,DisMax 查询与布尔查询相同,因为对于析取,两者都认为文档在相同条件下是匹配的。不同之处在于,DisMax 通过采用最高的个人匹配(加上一个可选的决胜局)对结果匹配进行评分,并且默认情况下布尔查询将分数相加。
如果您从 DisMax 需要的是带有引号、+/- 等的简单语法,那么使用 queryType=simple(默认值)将为您提供 Azure 搜索中的大部分内容,但“~”(模糊/倾斜)除外.
如果您需要的是实际的最大析取方式来对比赛进行评分,那么这在今天是不可行的。
至于您提到的其他功能:
- 查询字段:Azure 搜索查询中有一个“searchFields”选项可以执行此操作。
- 短语字段:您可以通过查询单个术语然后在引号中的术语组来手动实现这一点(虽然很痛苦),并使用不同的提升(您需要为此使用完整的 lucene 查询,简单的查询不会这样做,因为个人术语/组提升)。
- Boost 函数/查询:在 Azure 搜索中没有任何东西可以 1:1 映射到 this,但是评分配置文件允许您对许多使用它建模的场景进行建模。
有关 searchFields 和其他查询选项的详细信息:
https ://docs.microsoft.com/en-us/rest/api/searchservice/search-documents
有关评分配置文件的详细信息:
https ://docs.microsoft.com/en-us/rest/api/searchservice/add-scoring-profiles-to-a-search-index