процент схожести данных

midnighter

Guest
процент схожести данных

Может кто сталкивался с задачкой:
в базе есть 5 полей, все текстовые. Записей в БД около 100000 как определять процент схожести добавляемых данных? скажем дабавленных напротяжении суток. Нужно как-то запрещать добавлять дубликаты, но делать это не просто через =.
сенкс.
 

midnighter

Guest
процент схожести, дабы небыло дубликатов скажем
"требуется водитель".
"водитель требуется".
все остальные поля одинаковы на 100% но это дубль.
 

Demiurg

Guest
Сначала попробуй дать четкое объяснение - что в твояей задаче явдяется дубликатом.
 

midnighter

Guest
Если процент схожести скажем больше 90% это дубль, задачка то и стоит как определить 90%. я раньше видел алгоритмы такие но что-то туго сейчас.
 

young

Новичок
работает на ура

int similar_text ( string first, string second [, float &percent] )
 

midnighter

Guest
супер конечно но как это дело к БД привязать? брать по одной записи будет долго и медленно.
 

Макс

Старожил PHPClub
1. делаешь конкатенацию всех текстовых полей.
2. разбиваешь это все в массив по пробельным символам (\s)
3. удаляешь из массива все что не является словами
4. ( по желанию ) удаляешь все короткие слова
5. (по желанию) удаляешь 2-3 символа с конца каждого слова
6. (по желанию) удаляешь дублирующие слова (может это вообще не надо)
7. делаешь сортировку массива
8. объединяешь массив по пробелу (implode(' ', $array))
9. приводишь текст к одному регистру (strtolower)
10. Делаешь md5 от полученной строки.

Для похожих текстов будут одинаковые хеши

В таблицу добавляешь поле unique_hash и строишь по нему уникальный индекс.
 

SunDrop

Помощник поисков. робота
Для похожих текстов будут одинаковые хеши
Вот с этой фразой не согласен.
Любое добавление слова в текст2, которого нет в текст1 делаем хеши абсолютно разными.

Что бы я сделал:
шаг +1 переводим полученный после обработки массива текст в транслит
шаг +2 для транслитирированного текста запускаем metaphone и записываем данное поле в базу
шаг +3 навешиваем на metaphone fulltext индекс и при добавлении статьи смотрим на релевантность индекса
 
Сверху