Azure Search Lucene查询结果不正确



我目前正在使用Azure Search根据用户传入的过滤器带回存储在blob存储中的图像。下面是我的Azure搜索,我认为它应该过滤标记字段中指定的所有内容作为AND:

search=foreignId:d0c41422-acfa-4e4b-a9db-8c06b6860f3f, tags:SiteRef +""TY0033"" + BlockRef + ""00"" + Disipline + ""FABRIC""&searchMode=all&queryType=full

以及它带来了什么(正如你从BlockRef中看到的那样,这是错误的,尽管如果我通过CN0001,它会带来正确的值(:

"foreignId": "d0c41422-acfa-4e4b-a9db-8c06b6860f3f",
"description": "Health & Safety Eire - Site Photo - TY0033-01- 
FABRIC-005",
"fileName": "TY0033-01-FABRIC-005",
"fileExtension": ".jpg",
"createdAt": "26/11/2018 02:00:24",
"tags": "[{"TagName":"SiteRef","Value":"TY0033"},{"TagName":"BlockRef","Value":"01"},{"TagName":"Disipline","Value":"FABRIC"},{"TagName":"PhotoNumber","Value":"005"}]",
"longitude": 0,
"latitude": 0

95%的情况下,这是完美的,但在其他5%的情况下图像返回不正确,因为Azure搜索提供了不正确的详细信息。

我已经检查过了,这似乎是因为它不尊重搜索词的多样性。我是Azure Search的新手,所以我想知道我做得是否正确?

如有任何帮助,将不胜感激

索引定义:

索引定义

编辑:更新了带有索引定义的帖子

在查询中,检查foreignId是否等于d0c41422-acfa-4e4b-a9db-8c06b6860f3f,并且tags字段是否包含SiteRef,以及是否有任何可搜索字段包含TY0033BlockRef00DisiplineFABRIC。在您的情况下,所有字段都是可搜索的。因此:

forignId匹配tags包含SiteRefTY0033BlockRefDisiplineFABRIC在标签字段中00在createdAt字段中,因为标准Lucene分析器将"26/11/2018 02:00:24"标记为26,11,2018,02,00,24

为了在标签字段中进行搜索,您应该如下重写查询:

search=foreignId:d0c41422-acfa-4e4b-a9db-8c06b6860f3f AND tags:(SiteRef AND ""TY0033"" AND BlockRef AND ""00"" AND Disipline AND ""FABRIC"")&searchMode=all&queryType=full

可能值得使用邻近搜索来确保关联出现的字段/值对,例如:BlockRef00,例如"BlockRef 00"~1

最新更新