我在 CosmosDB 之上以完整查询模式使用 Azure 搜索,我想对任何包含字符串“azy do”的字段的文档运行查询。例如,这应该匹配包含“lazy dog”的文档。
阅读 Azure 搜索文档,由于它使用的是基于术语的索引,所以看起来这是不可能的。
被拒绝的解决方案
0 个匹配项,因为它正在寻找整个单词:
"azy do"
不起作用,因为不允许正则表达式跨越多个术语:
/.*azy do.*/
这个“有效”,可以匹配“lazy dog”,但是这不符合查询的顺序,也可以匹配“dog lazy”,例如
/.*azy.*/ AND /.*do.*/
有什么方法可以在 Azure 搜索中正确执行此操作?
如果您想测试一个潜在的解决方案,您可以修改search
变量in this JSFiddle正在使用 Azure 搜索的演示 Microsoft 实例。
最佳答案
如果我理解正确的话,这个确切的场景似乎是不可能的。
如果没有正则表达式通配符,您可以进行邻近搜索:
var search = '"business budget"~3';
这里是更多阅读的链接:
https://learn.microsoft.com/en-us/rest/api/searchservice/lucene-query-syntax-in-azure-search
关于azure-cosmosdb - 在 Azure 搜索中,如何使用多个术语运行 "contains"搜索?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46790836/