Найти в Дзене

Нечёткий поиск при пересечении множеств с помощью хэширования по сигнатуре в SQL

Нечёткий поиск при пересечении множеств с помощью хэширования по сигнатуре в SQL Статья рассказывает о реализации эффективного алгоритма нечёткого поиска между двумя множествами строк на базе хэширования по сигнатуре и интеграции этого решения в SQL Server с применением SQLCLR. 👉 Алгоритм основан на 32-битных сигнатурных хэшах с правилом двух ошибок, что обеспечивает детерминированный поиск строк с одной ошибкой по расстоянию Левенштейна. 👉 Для ускорения используется алгоритм HEngine, который дробит хэши на части (chunk) и сокращает объём сравниваемых данных до линейного роста при поиске похожих пар. 👉 Полная интеграция в SQL Server реализована через SQLCLR — вызовы сложных функций хэширования и сравнения строк неэффективны в T-SQL. 👉 Для повышения производительности введена оптимизация с k-комбинациями chunk-ов, уменьшающая затратные операции агрегации и join. 👉 Алгоритм подходит для поиска по небольшим и средним строкам (ФИО, VIN, штрихкоды и пр.) и может масштабироваться

Нечёткий поиск при пересечении множеств с помощью хэширования по сигнатуре в SQL

Статья рассказывает о реализации эффективного алгоритма нечёткого поиска между двумя множествами строк на базе хэширования по сигнатуре и интеграции этого решения в SQL Server с применением SQLCLR.

👉 Алгоритм основан на 32-битных сигнатурных хэшах с правилом двух ошибок, что обеспечивает детерминированный поиск строк с одной ошибкой по расстоянию Левенштейна.

👉 Для ускорения используется алгоритм HEngine, который дробит хэши на части (chunk) и сокращает объём сравниваемых данных до линейного роста при поиске похожих пар.

👉 Полная интеграция в SQL Server реализована через SQLCLR — вызовы сложных функций хэширования и сравнения строк неэффективны в T-SQL.

👉 Для повышения производительности введена оптимизация с k-комбинациями chunk-ов, уменьшающая затратные операции агрегации и join.

👉 Алгоритм подходит для поиска по небольшим и средним строкам (ФИО, VIN, штрихкоды и пр.) и может масштабироваться при допустимых ошибках, но не предназначен для больших текстов.

https://habr.com/ru/articles/965934/

a State of .NET | Подписаться