Реализовать на C# алгоритм сравнения текстов

Сергей12 лет в сервисе
Данные заказчика будут вам доступны после подачи заявки
16.11.2012

Необходимо реализовать на C# алгоритм сравнения текстов (алгоритм шинглов).

Описание алгоритма:

http://habrahabr.ru/post/65944/

http://blog.arseo.ru/shingly/

http://uniofweb.ru/wiki/algoritm-shinglov/

http://www.codeisart.ru/part-1-shingles-algorithm-for-web-documents/

http://www.codeisart.ru/python-shingles-algorithm/

Есть система управления рерайтерами (ASP.NET C# /SQL Server), в которую 100 рерайтеров постоянно добавляют свои статьи. При добавлении новой статьи в БД, необходимо вычислить процент схожести добавляемого текста с уже существующими текстами по методу шинглов, чтобы рерайтер видел уникальность добавляемой статьи относительно своих и чужих(ранее добавленных статей). Т.е проверка статей на уникальность осуществляется ТОЛЬКО в рамках нашей локальной БД.

1. Нужна функция на c# (static string GenShingle (string paramText, int paramShingleLen)), которая получив в качестве параметра текст и длину шингла, вернет 100(или 50) шинглов(через запятую). Если решите хранить данные в поле XML, а не через запятую, то можно и так.

2. Нужна Scalar_Function на T-SQL, которая получив два параметра (строку шинглов1 и строку шинглов2) вернет процент схожести текстов. Мы самостоятельно напишем курсор, который «пробежит» все записи нашей БД и найдет минимальный процент схожести для добавляемой в БД записи.

Важно сказать, что длинна текстов от 1000 до 10000 знаков, поэтому придется учитывать работу алгоритма шинглов с короткими текстами. Основная длина шингла с которой будем работать равна 3(трем).

От исполнителя мы надеемся получить SQL – скрипт с функцией и c# код с методом GenShingle. Интегрировать все это в свой проект мы будем самостоятельно. Следовательно, не имеет абсолютно никакого значения ни версия SQL , ни версия VSNET. Даже не имеет значения, на чем будете делать тестовое приложение! Думаю, на WinForm будет проще!

Оплата, после проверки (можно по скайп с расшариванием экрана).