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*"
我正在使用 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" 的所有“-”,我正在尝试按照此
{
"search": "*",
"filter": "search.ismatch('/.*08010000OU/.*','STUFF', 'full', 'all')",
"skip": "0",
"count": true
}
我试图在查询搜索的开头使用通配符,因为我仍然缺少一些信息。
我相信您无法使用 StandardAnalyzer 解决此问题。尝试为这个特定字段切换到 WhitespaceAnalyzer,它可能适用于 "05-05*"