Введение
Расширенное полное текстовое соответствие в поисковых системах является ключом к повышению точности и актуальности результатов поиска. Это особенно критично в таких областях, как анализ патентов, обзор контрактов, идентификация клаузул и поиск товарных знаков, где точность функциональности поиска имеет решающее значение. Прогресс Manticore Search от простой функции <code>REGEX()</code> до оператора полного текста REGEX, доступного с версии 6.3.0 , является значительным достижением в этом контексте, предлагая сложное и тонкое соответствие шаблонам в запросах.
Новый оператор REGEX особенно полезен для сложных сценариев поиска. Например, на платформах аналитики данных он может искать конкретные шаблоны в лог-файлах или репозиториях кода, идентифицируя уникальные коды ошибок или программные конструкции. В базах данных академических исследований он позволяет исследователям находить публикации с конкретными стилями цитирования или шаблонами библиографических ссылок. Более того, в поисках товарных знаков оператор REGEX незаменим для нахождения точных или схожих товарных знаков, учитывая разнообразный и сложный характер текстов товарных знаков.
Использование REGEX в запросах
Чтобы использовать оператор REGEX, ваша таблица должна быть настроена с min_infix_len или min_prefix_len. Эта настройка может быть вам уже знакома, если вы используете поиск подстрок. Новый оператор REGEX подобен расширенному оператору подстановки. Например, REGEX(/t.?e/) соответствует любому термину, начинающемуся с 't', за которым следует любой символ и заканчивающемуся на 'e'. Это подчеркивает способность оператора обрабатывать разнообразные и сложные текстовые шаблоны, предоставляя сложный подход к поисковым запросам.
Пример
Предположим, у нас есть эта таблица:
create table brands(name text) min_infix_len='2' charset_table='non_cjk, -'
select * from brands;
--------------
+---------------------+------------------------+
| id | name |
+---------------------+------------------------+
| 1515699435999330620 | SeaCrest Flower |
| 1515699435999330621 | C-Crest Flour |
| 1515699435999330622 | CCrest Flower |
| 1515699435999330623 | Flower SeaCrest |
| 1515699435999330624 | RightWrite Stationery |
| 1515699435999330625 | WriteRight Stationery |
| 1515699435999330626 | SoleSoul Footwear |
| 1515699435999330627 | SoulSole Footwear |
| 1515699435999330628 | PeakBeak Aviaries |
| 1515699435999330629 | BeakPeak Aviaries |
| 1515699435999330630 | GrateGreat Kitchenware |
| 1515699435999330631 | GreatGrate Kitchenware |
| 1515699435999330632 | Sunnyside Cyder |
| 1515699435999330633 | SunnyCide Cyder |
| 1515699435999330634 | ThymeTime Cooking |
| 1515699435999330635 | TimeThyme Cooking |
| 1515699435999330636 | KnightNight Security |
| 1515699435999330637 | NightKnight Security |
| 1515699435999330638 | PearPair Electronics |
| 1515699435999330639 | PairPear Electronics |
+---------------------+------------------------+
20 rows in set (0.00 sec)
Ранее, чтобы найти бренды SeaCrest Flower, C-Crest Flour и CCrest Flower — которые все звучат похоже — запрос должен был быть исчерпывающим:
select * from brands where match('"SeaCrest flower"|"SeaCrest flour"|"CCrest flower"|"CCrest flour"|"C-Crest flower"|"C-Crest flour"');
С новым оператором REGEX мы можем упростить этот запрос до:
select * from brands where match('"REGEX(/(c|sea).*crest/) REGEX(/flo(we|u)r/)"')
--------------
+---------------------+-----------------+
| id | name |
+---------------------+-----------------+
| 1515699435999330620 | SeaCrest Flower |
| 1515699435999330621 | C-Crest Flour |
| 1515699435999330622 | CCrest Flower |
+---------------------+-----------------+
3 rows in set (0.00 sec)
Синтаксис RE2 и производительность
Оператор REGEX в Manticore Search соответствует синтаксису RE2 , известному своей высокой производительностью и безопасностью при обработке регулярных выражений. Разработанный Google, RE2 избегает распространенных проблем в обработке regex, таких как катастрофическое обратное отслеживание, что делает его эффективным и безопасным для различных приложений. Хотя оператор REGEX мощный, его использование может повлиять на время поиска, особенно при сканировании больших словарей. Пользователям может потребоваться найти баланс между глубиной возможностей поиска и производительностью запросов. В ситуациях, критически важных для производительности, упрощение шаблонов REGEX и использование дополнительных фильтров поиска могут помочь сократить время поиска, тем самым поддерживая баланс между сложностью и эффективностью.
Заключение
Введение оператора REGEX в Manticore Search является заметным шагом вперед в возможностях полного текстового поиска. Он повышает точность и актуальность результатов поиска и открывает новые возможности для обработки сложных запросов в различных областях, включая аналитику данных, академические исследования и поиск товарных знаков. Используя оператор REGEX, пользователи могут получить более высокий уровень эффективности и точности поиска, что делает Manticore Search еще более мощным и универсальным инструментом в области поисковых систем полного текста.
