AZURE ПОИСК, ismatch не фильтруется - PullRequest
0 голосов
/ 27 марта 2020

Я использую 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|",

это сводит меня с ума, потому что я не знаю, почему вернулись эти результаты.

Может быть, важно знать, что я выполняю запрос POST к Azure API поиска с этим кодом в фильтре

Может быть, мне следует избегать таких особенных символов, как - и? вот так

search.ismatch('05\\-05\\-\\?\\?\\-\\?\\?','STUFF')

Но результаты были одинаковыми.

Может кто-нибудь помочь мне?

РЕДАКТИРОВАТЬ 1

После этого Статья Я изменяю некоторые вещи и делаю следующий поиск:

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 ", и я пытаюсь следовать этому вопросу , чтобы вызвать боль как" содержит ", но я выполнил запрос POST со следующими параметрами

{
    "search": "*",
    "filter": "search.ismatch('/.*08010000OU/.*','STUFF', 'full', 'all')",
    "skip": "0",
    "count": true
}

Я пытаюсь использовать подстановочный знак в начале поиска запроса, потому что мне все еще не хватает некоторой информации.

1 Ответ

1 голос
/ 27 марта 2020

Я считаю, что вы не сможете решить эту проблему с помощью StandardAnalyzer. Попробуйте переключиться на WhitespaceAnalyzer для этого конкретного поля, и оно, вероятно, будет работать с "05-05*"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...