我目前正在使用Azure搜索根据用户传递的筛选器恢复存储在Blob存储中的图像。以下是我的Azure搜索,我认为应该将AND字段中指定的所有内容过滤为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的新手,所以我想知道自己做的是否正确?
任何帮助将不胜感激
索引定义:
编辑:更新了带有索引定义的帖子
答案 0 :(得分:0)
在查询中,您检查foreignId
是否等于d0c41422-acfa-4e4b-a9db-8c06b6860f3f
并且tags
字段是否包含SiteRef
,以及是否有任何可搜索字段包含TY0033
,{{1 }},BlockRef
,00
和Disipline
。在您的情况下,所有字段都是可搜索的。因此:
FABRIC
个匹配项
forignId
包含tags
SiteRef
,TY0033
,BlockRef
和Disipline
在标签字段中
FABRIC
在createdAt字段中,因为标准Lucene分析器将00
标记为"26/11/2018 02:00:24"
为了在标签字段中进行搜索,您应该按以下方式重写查询:
26,11,2018,02,00,24
使用proximity search来确保您将出现的字段/值对相关联是值得的,例如:search=foreignId:d0c41422-acfa-4e4b-a9db-8c06b6860f3f AND tags:(SiteRef AND \""TY0033"\" AND BlockRef AND \""00"\" AND Disipline AND \""FABRIC"\")&searchMode=all&queryType=full
和BlockRef
例如00