Поиск текста с помощью шинглов

Максим18 лет в сервисе
Данные заказчика будут вам доступны после подачи заявки
02.12.2007

Необходимо создать исходную базу данных (БД), содержащую фрагменты текста на русском языке (1 фрагмент - до 10-15 строк). Фрагменты хранятся в БД совместно с дополнительными служебными полями. (Как я понимаю Тупо одна таблица с двумя полями)

Программа, по ниже приведенному описанию алгоритма, должна сравнить фрагменты введенного в поле запроса текста (не слова а именно текста, предполагается 1-2 предложения) с текстами хранящимися в БД и выдать результаты сравнения.

Алгоритм:

Для каждого десятисловия текста рассчитывается контрольная сумма (шингл). Десятисловия идут внахлест, с перекрытием, так, чтобы ни одно не пропало. А затем из всего множества контрольных сумм (очевидно, что их столько же, сколько слов в документе минус 9) отбираются только те, которые делятся на, скажем, 25. Поскольку значения контрольных сумм распределены равномерно, критерий выборки никак не привязан к особенностям текста. Ясно, что повтор даже одного десятисловия – весомый признак дублирования, если же их много, скажем, больше половины, то с определенной (несложно оценить вероятность) уверенностью можно утверждать: копия найдена! Ведь один совпавший шингл в выборке соответствует примерно 25 совпавшим десятисловиям в полном тексте!

Нужно: Соответственно рабочую программку с удобным интерфейсом и наглядным предоставлением результатов поиска. (Возможность добавлять текст в БД, можно не из программы, ) исходный код и подробный алгоритм работы программы (не только алгоритма поиска, а полностью), можно от руки.

Среда разработки: Delphi

СУБД: не имеет значения