在Azure搜索中,如何在searchtext中使用多个术语运行“包含”搜索?

时间:2018-06-01 17:55:58

标签: azure azure-sql-database azure-search

我在CosmosDB之上以完全查询模式使用Azure搜索,我想对包含字符串“azy do”的字段的任何文档运行查询。例如,这应该与包含“懒狗”的文档匹配。

阅读Azure搜索文档,由于它使用了基于术语的索引,因此看起来这是不可能的。

拒绝解决方案

0匹配,因为它正在寻找整个单词:“azy do”

不起作用,因为不允许正则表达式跨越多个术语:/。 azy do。 /

这“工作”,在某种程度上它会匹配“懒狗”,但这不符合查询的顺序,也会匹配“狗懒”,例如/。 azy。 / AND /.do./

有没有办法在Azure搜索中正确执行此操作?

3 个答案:

答案 0 :(得分:0)

如果你无法通过Lucene Query语法中的正则表达式实现这一点,则无法实现。您可能希望投票支持包含here

答案 1 :(得分:0)

应该是/.lazy|dog./ 因此,根据空格拆分术语,并添加一个管道(|)分隔符,代表OR。

答案 2 :(得分:0)

很快,Azure搜索不支持此方案。您可能最好使用Cosmos DB中的CONTAINS函数或其等效函数,具体取决于您使用的查询语言。

Azure搜索旨在查找非结构化内容(文档)中出现的术语或短语,并返回最相关的文档。提取和索引这些可搜索术语的过程可以自定义并在此处描述:How full text search works in Azure Search