Поиск (очень) приблизительных подстрок в большой базе данных - PullRequest
5 голосов
/ 08 августа 2010

Я пытаюсь найти длинные приблизительные подстроки в большой базе данных.Например, запрос может представлять собой подстроку из 1000 символов, которая может отличаться от соответствия расстоянием Левенштейна в несколько сотен правок.Я слышал, что индексированные q-граммы могут это сделать, но я не знаю деталей реализации.Я также слышал, что Lucene может это сделать, но достаточно ли быстродействующий алгоритм Lucene's levenshtein для сотен правок?Возможно, что-то из мира обнаружения плагиата?Любой совет приветствуется.

Ответы [ 2 ]

1 голос
/ 08 августа 2010

Lucene не кажется подходящим инструментом здесь.В дополнение к прекрасным предложениям Микоса, я слышал о AGREP , FASTA и Локальное хеширование (LSH) Я считаю, что эффективный метод должен сначала сильно сократить пространство поиска, и только потом делать более изощренную оценку оставшихся кандидатов.

1 голос
/ 08 августа 2010

Q-граммы могут быть одним из подходов, но есть и другие, такие как Blast, BlastP - которые используются для белков, совпадений нуклеотидов и т. Д.

Библиотека Simmetrics представляет собой исчерпывающую коллекцию подходов на расстоянии строки.

...