我正在使用Azure搜索在数据库中执行一些海关搜索。
我有一个具有这种结构的字段:
“ STUFF”:“ 05-05-16-00 |”
但是我在创建过滤器时遇到了麻烦,因为可能无法获得构建此结构的所有数字。这完全取决于最终用户要输入的内容。因此,我需要一个通配符来填充缺少的数字,像这样
“ 05-05-??-??” ->管道很重要,因为此字段内部可以包含多个代码。
现在我需要捕获所有以05-05开头的元素,例如:05-05-11-01
我以为我应该使用search.ismatch()函数,但是不起作用。
这里是一些代码:
search.ismatch('05-05-??-??','STUFF');
结果是:
"STUFF": "02-02-16-00|",
"STUFF": "02-02-14-00|",
这使我发疯,因为我不知道为什么这个结果回来了。
也许很重要,因为我知道我使用'filter'中的这段代码对Azure Search API执行POST请求,>
也许我应该转义-和?这样的特殊字符?像这样
search.ismatch('05\\-05\\-\\?\\?\\-\\?\\?','STUFF')
但是结果是相同的。
有人可以帮我吗?
编辑1
此Article之后,我更改了一些内容并进行以下搜索:
search.ismatch('\"05-00*\"','STUFF','simple', 'all')
并且我开始得到一些结果,但是现在这是我的结果:
"STUFF": "06-05-02-00|", //WRONG "STUFF": "05-02-05-01|", //RIGHT "STUFF": "05-02-02-07|", //RIGHT
由于某种原因,它重新构造了正确的结构,但没有重新显示文本的开头。
我正在使用Azure搜索在数据库中执行一些海关搜索。我得到了一个具有这种结构的字段:“ STUFF”:“ 05-05-16-00 |”但我在创建过滤器时遇到了麻烦,...
我相信您将无法使用StandardAnalyzer解决此问题。尝试为此特定字段切换到WhitespaceAnalyzer,它可能适用于"05-05*"