Azure搜索Lucene查询结果不正确

时间:2018-12-11 16:21:26

标签: azure lucene full-text-search azure-search

我目前正在使用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的新手,所以我想知道自己做的是否正确?

任何帮助将不胜感激

索引定义:

Index Definition

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

1 个答案:

答案 0 :(得分:0)

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

FABRIC个匹配项 forignId包含tags SiteRefTY0033BlockRefDisipline在标签字段中 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=fullBlockRef例如00