Проблема с регулярным выражением индекса поиска Azure

Рассмотрим следующий набор:

2017.16, 2017.16.a, 2017.16.b, 2017.167

Я пытаюсь использовать регулярное выражение для поиска в своем лазурном индексе и возвращаю: 2017.16.a, 2017.16.b

используя в качестве моего запроса следующее:

accession_number:/2017\.16\.*/

возвращает три документа: 2017.16, 2017.16.a, 2017.16.b

Как я могу изменить регулярное выражение, чтобы оно включало только записи .a и .b?


person Ryan    schedule 08.07.2019    source источник


Ответы (1)


Предполагая, что это поле не является «доступным для поиска», вы получаете это совпадение, потому что конец регулярного выражения («16. *») соответствует всему, что заканчивается на 16, за которым следует ноль или более (включая несколько) точек. Если вы хотите включить в качестве суффиксов только «a» или «b», вы можете использовать:

/2017\.16\.(a|b)/

Если вы хотите разрешить еще ровно 1 символ, любой символ:

/2017\.16\../
person Pablo Castro    schedule 08.07.2019
comment
Я избежал символа \. (Точка), я хочу найти все, что начинается со строки 2017.16. включая заключительный период. В 2017.16 нет финального периода, и 2017.167 тоже не подходит. но может быть любое количество совпадений (не только a и b, это всего лишь простые примеры) и не просто еще один символ, а один или несколько символов (например, 2017.16.aaaa 2017.16.cd). У меня возникли проблемы с использованием ^ или / A для начала поиска и других вещей, которые я пробовал с помощью Поиска Azure. - person Ryan; 08.07.2019
comment
Точка экранирована, но после этого у вас будет , что означает ноль или более того, что было раньше. Это заставляет регулярное выражение соответствовать регистру, оканчивающемуся на .16 (без точки). Если вы хотите что-то, что начинается с 2017.16. (включая период), вам нужно будет использовать вариант второго примера, который я предоставил выше: /2017\.16\..*/ Обратите внимание, что у него есть экранированный период (чтобы соответствовать фактическому периоду), а затем. для соответствия любому суффиксу. - person Pablo Castro; 11.07.2019
comment
/2017\.16\..*/ был тем, что мне было нужно, и я пытался, но не работал. Мне нужно было добавить Analyzer = AnalyzerName.Keyword в определение поля. Как только это было добавлено, вышеуказанное регулярное выражение работало как шарм. Кажется, что поле токенизировалось, что вызывало проблемы с моими попытками регулярного выражения. - person Ryan; 12.07.2019