如何将AzureSearch与通配符一起使用

时间:2017-12-01 10:42:09

标签: azure azure-search

我想搜索一个名为“14009-00080300”的字段,我只想搜索其中的一部分,例如“14009-000803”。

使用此代码我没有得到任何点击:

   {
 "search": "\"14009-000803\"*",
 "count":true,
 "top":10
}

是否有办法使用azure搜索,如SQL使用其通配符搜索? (从表格中选择*,其中col为'%abc%'?

2 个答案:

答案 0 :(得分:1)

通过使用Lucene语法执行完整查询(如Sumanth BM所述),您可以获得所需的结果。诀窍是进行正则表达式搜索。像这样修改你的查询参数:

{
 "queryType": "full",
 "search": "/.*searchterm.*/",
 "count":true,
 "top":10
}

替换' searchterm'您正在寻找的东西,天蓝色搜索应返回索引可搜索列中的所有匹配项。

请参阅文档部分:MS Docs on Lucene regular expression search

答案 1 :(得分:0)

您可以对多个()或单个(?)字符通配符搜索使用通用的语法。请注意,Lucene查询解析器支持将这些符号用于单个术语,而不是短语。 例如,要查找包含带有前缀“note”的单词的文档,例如“notebook”或“notepad”,请指定“note ”。

请注意 你不能使用*或?符号作为搜索的第一个字符。 不对通配符搜索查询执行文本分析。在查询时,将通配符查询项与搜索索引中的已分析术语进行比较并进行扩展。

SearchMode参数注意事项 searchMode对查询的影响(如Azure搜索中的简单查询语法中所述)同样适用于Lucene查询语法。也就是说,如果您不清楚如何设置参数的含义,那么searchMode与NOT运算符一起可能会导致查询结果看似不寻常。如果保留默认值searchMode = any,并使用NOT运算符,则操作将计算为OR操作,这样“纽约”而非“西雅图”将返回所有非西雅图的城市。

https://docs.microsoft.com/en-us/rest/api/searchservice/simple-query-syntax-in-azure-search

参考:https://docs.microsoft.com/en-us/rest/api/searchservice/lucene-query-syntax-in-azure-search#bkmk_wildcard