Есть ли эффективный алгоритм сопоставления строк в MySQL? - PullRequest
1 голос
/ 30 мая 2011

Существует ли реализация алгоритма быстрого сопоставления строк для поиска по ключевым словам в MySQL?Например, Aho-Corasick или любой другой алгоритм быстрого сопоставления строк.

Обычно Aho-Corasick реализован на Java или любом другом скомпилированном языке, но должна быть возможность написать его как хранимую процедуру в MySQL.

Спасибо!

1 Ответ

1 голос
/ 30 мая 2011

Поскольку хранимые процедуры завершены по Тьюрингу, и вы можете использовать «курсор» для циклического перебора записей в таблице (возможно, с какой-то существующей причиной «ГДЕ»), то вы можете сделать это в хранимой процедуре.

Сохраненная функция также возможна.

Однако язык хранимых подпрограмм MySQL настолько ужасен как с точки зрения удобства использования, так и с точки зрения производительности, что результат вряд ли будет легким или быстрым.

Так что, возможно, вам лучше написать MySQL UDF (которую вы можете написать на любом языке, при условии, что вы можете сделать так, чтобы она выглядела как библиотека C), и вместо этого сделать это.

Рассмотрим ваши конкретные требования. Я предполагаю, что запрос с большим количеством тегов «OR col LIKE ...» для вас слишком неэффективен, поскольку вы хотите сопоставить тысячи шаблонов одновременно, верно?

...