我们的搜索服务以以下方式使用Azure认知搜索:
- 非模糊搜索(即查询字符串完全匹配)
- 搜索模糊(即允许在查询字符串中更改1-2个字母)
- 按一定规则连接结果。
这样我们想要实现完整匹配的结果将始终在顶部。
但是现在我们要引入分页。用两个单独的查询来完成它是一项困难且不有效的任务。另一种方法是以某种方式创建一个查询,该查询本身将结合模糊和非模糊搜索,但具有不同的评分配置文件,其中一个具有全匹配搜索的较高权重,另一个具有模糊搜索的较低权重。就像search=rabbit&scoringProfile=highWeightsProfile | seacrh=rabbit~&scoringProfile=lowWeightsProfile
是否有办法做到这一点,无论是在API或在SDK?是否有其他解决模糊搜索问题的方案,但在完全匹配中得分更高?
用Lucene查询语法增强单个子查询对我来说是一个很好的解决方案。也许不像区分模糊部分和非模糊部分那样灵活,但仍然很好。