Я использую 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
}
Я пытаюсь использовать подстановочный знак в начале поиска запроса, потому что мне все еще не хватает некоторой информации.