Здравствуйте. Появилась проблема - нужно искать в БД одинаковые записи, ну и помечать каким то образом. Пробовал различные способы. Самым удобным было использование similar_text() в php, оно же и самое медленное. По скорости устраивает использование MATCH\AGAINST, но не могу понять, как используя их определить степень похожести двух строк? Если similar_text() возвращает похожесть в процентах - 100% идентичные строки, то MATCH\AGAINST возвращает совершенно невнятные ответы. Единственное что там можно понять если сравнивать одну строку с несколькими то самую похожую, но на сколько они похожи - непонятно. Подскажите пожалуйста, как их правильно интерпретировать, что бы определить похожесть строк по какой то фиксированной шкале? Надеюсь это вообще в принципе возможно? Спасибо.
Матч возвращает массив отсортированный в порядке релевантности. Поиск осуществляется в полях с полностекстовым поиском. По желанию, можно тоже вернуть % релевантности. http://phpclub.ru/mysql/doc/fulltext-search.html
Извините, а как вернуть именно процент? В примере который в ссылке есть такое: +----+-------------------------------------+-----------------+ | id | body | score | +----+-------------------------------------+-----------------+ | 4 | 1. Never run mysqld as root. 2. ... | 1.5055546709332 | | 6 | When configured properly, MySQL ... | 1.31140957288 | +----+-------------------------------------+-----------------+ Извиняюсь что таблица поехала. Так вот 1.5 и 1.3 это и есть процент? Не похоже что то. У меня и за несколько тысяч вроде зашкаливало, при сравнении больших строк. Или я что то путаю. Завтра еще раз проверю.
Azrarn Да, да, вы правы насчет этого. Это не процент. Как получить % - не знаю, возможно по какой-то формуле. Для этого надо понаблюдать за результатами.
А может лучше сначала мануал почитать? А вообще не понял в чем проблема? UPDATE bla, blabla SET bla.metka = 1 WHERE bla.stri = blabla.stri; Ну и ндекс в blabla и bla по stri должен быть.
А если по серьезному дождатся пока в sphinx ввинтят "realtime" обновления. http://www.sphinxsearch.com/ Вроде уже скоро. http://habrahabr.ru/blog/webdev/40473.html#comments И забыть как страшный сон FULLTEXT INDEX.
Sphinx я тоже использую, меня то сейчас интересует именно нахождение дублей, причем не 100% разумеется, это не сложно. Sphinx такое тоже не позволяет сделать, я на тамошнем форуме интересовался. Так значит никто не знает?
Если я правильно по буржуйски понял, то булевый режим тебе нужен. Частотные характеристики он игнорирует. http://www.sphinxsearch.com/doc.html#matching-modes или с SetFieldWeights играться http://www.sphinxsearch.com/doc.html#ap ... eldweights возможно и то и другое одновременно. Смотреть при каких установках будет выдавать нужный результат. The weights must be positive 32-bit integers. The final weight will be a 32-bit integer too. Default weight value is 1.