Поисковый запрос Lucene Azure Неверный результат - PullRequest
0 голосов
/ 11 декабря 2018

В настоящее время я использую Поиск Azure, чтобы вернуть изображения, хранящиеся в хранилище больших двоичных объектов, на основе фильтров, переданных пользователем.Ниже представлен мой поиск 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, поэтому мне интересно, правильно ли я это делаю?

Любая помощь будет принята с благодарностью

Определение индекса:

Определение индекса

Редактировать: Обновлено сообщение с определением индекса

1 Ответ

0 голосов
/ 13 декабря 2018

В вашем запросе вы проверяете, равно ли foreignId значение d0c41422-acfa-4e4b-a9db-8c06b6860f3f и tags поле содержит SiteRef, и если любое поле поиска содержит TY0033, BlockRef, 00, Disipline и FABRIC.В вашем случае все поля доступны для поиска.Таким образом:

forignId совпадений tags содержит SiteRef TY0033, BlockRef, Disipline и FABRIC в поле тегов 00 в поле createAt, как стандартный анализатор 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

Возможно, стоит использовать бесконтактный поиск , чтобы убедиться, что вы коррелируете пары полей значений и значений, например: BlockRef и 00, например, "BlockRef 00"~1

...