AZURE SEARCH,ismatch 不过滤

AZURE SEARCH, ismatch not filtering

我正在使用 Azure 搜索在数据库中执行一些海关搜索。

我得到了具有这种结构的字段:

"STUFF":“05-05-16-00|”

但我在创建过滤器时遇到了麻烦,因为我可能没有构建此结构的所有数字。这完全取决于最终用户将键入的内容。所以我需要一个通配符来用缺失的数字填充空白,就像这样

“05-05-??-??” ->管道很重要,因为这个字段里面可以有不止1个代码。

现在我需要捕获所有可能以 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 搜索 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

出于某种原因,它返回了正确的结构,而不是文本前面的结构。

编辑 2

我做了一些更改并更改了关键字 "OU" 的所有“-”,我正在尝试按照此 使疼痛像 "contains",但我使用以下参数执行 POST 请求

{
    "search": "*",
    "filter": "search.ismatch('/.*08010000OU/.*','STUFF', 'full', 'all')",
    "skip": "0",
    "count": true
}

我试图在查询搜索的开头使用通配符,因为我仍然缺少一些信息。

我相信您无法使用 StandardAnalyzer 解决此问题。尝试为这个特定字段切换到 WhitespaceAnalyzer,它可能适用于 "05-05*"