如何在Azure搜索的特定字段中搜索部分字符串?

时间:2020-09-25 18:36:14

标签: azure azure-cognitive-search

我有一个带有title字段的索引。其中包含以下文字:贝克斯菲尔德纪念医院

我希望能够通过部分字符串进行搜索。以下查询有效:

search=*&$filter=search.ismatch('bakersfield','title')
search=*&$filter=search.ismatch('memorial','title')

但是,如果我要搜索单词的部分字符串,则不会。例如:

search=*&$filter=search.ismatch('baker','title')

那我该如何搜索部分单词?

2 个答案:

答案 0 :(得分:1)

在您的示例中,您使用search.ismatch()而不指定queryType。这意味着它将默认为简单模式,该模式仅支持后缀通配符。

匹配“中心”和“中心”的示例:

search=*&$filter=search.ismatch('medical cent*','title','full','all')

如上面的通配符链接中所述,您不能使用*开头通配符查询,但可以在 full 模式下使用正则表达式语法。这应该可以很好地转化为您的用例。

匹配“ senter”和“ center”的示例:

search=*&$filter=search.ismatch('/.*enter/','title','full','all')

答案 1 :(得分:0)

回答我自己的问题,以防有人需要。

您可以像这样使用*运算符:

search=*&$filter=search.ismatch('baker*','title')

但是,这仅适用于开头搜索。对于包含或结尾不起作用。例如,以下操作无效:

search=*&$filter=search.ismatch('*field','title')