расстояние Редактирования не является вероятным кандидатом, поскольку это был бы зависимый написания/порядка слов, и намного более в вычислительном отношении дорогой, чем Желание ведет Вас для веры, рассматривая размер и количество документов, Вы на самом деле интересовались бы поиском.
Что-то как Lucene - способ пойти. Вы индексируете все свои документы, и затем когда Вы хотите найти документы подобными данному документу, Вы превращаете свой данный документ в запрос и ищете индекс. Внутренне Lucene будет использовать tf-idf и инвертированный индекс , чтобы заставить целый процесс занять количество времени, пропорциональное количеству документов, которые могли возможно соответствовать, не общее количество документов в наборе.
Можно использовать SQL Server Полнотекстовый индекс для получения умного сравнения, я полагаю, что ТАК использует вызов ajax, который делает запрос для возврата подобных вопросов.
, Какие технологии Вы используете?
Если Вы ищете слова, которые ранили одинаково, Вы могли преобразовать в soundex и soundex слова для соответствия... работавший для меня
Seconding предложение Lucene для полнотекстового, но примечание, что Java не является требованием; порт.NET доступен . Также посмотрите основная страница Lucene для ссылок на другие проекты, включая Lucy, порт C .
ТАКЖЕ - сравнение только на заголовке, не на основном тексте вопроса, поэтому только на довольно коротких строках.
можно использовать их алгоритм (никакая идея, на что он похож) на заголовке статьи и ключевых словах. Если у Вас есть больше процессорного времени для записи, также на кратких обзорах статей.
Один используемый общий алгоритм Самоорганизующаяся Карта . Это - тип нейронной сети, которая автоматически категоризирует Ваши статьи. Тогда можно просто найти местоположение, что текущая статья находится в карте, и все статьи около него связаны. Важная часть алгоритма - то, как Вы были бы вектор квантовать свой вход . Существует несколько способов сделать с с текстом. Можно хешировать документ/заголовок, можно считать слова и использование что как n размерный вектор и т.д. Надежда, которая помогает, хотя я, возможно, открыл ящик Пандоры для Вас бесконечной поездки в AI.
Я предлагаю индексировать Ваши статьи с помощью Apache Lucene, высокоэффективная, полнофункциональная текстовая библиотека поисковой системы, записанная полностью в Java. Это - технология, подходящая почти для любого приложения, которое требует полнотекстового поиска, особенно межплатформенного . После того, как индексированный, Вы могли легко найти похожие статьи.
Учебное руководство в этом ссылка кажется, что это может быть тем, в чем Вы нуждаетесь. Легко следовать и работы очень хорошо.
Его алгоритм вознаграждает и общие подстроки и общее упорядочивание тех подстрок и так должен выбрать подобные заголовки вполне приятно.
Это зависит от Вашего определения similiar.
расстояние редактирования алгоритм является стандартным алгоритмом для (латинский язык) предложения словаря и может работать над целыми текстами. Два текста являются similiar, если у них есть в основном те же слова (а буквы) в том же порядке. Таким образом, следующие две рецензии на книгу были бы справедливо similiar:
1) "Это - замечательная книга"
2), "Это не замечательные книги"
(Количество букв, чтобы удалить, вставить, удалить или измениться для превращения (2) в (1) называют 'расстоянием редактирования'.)
Для реализации этого Вы хотели бы посетить каждый обзор программно. Это является, возможно, не столь дорогостоящим, как это звучит, и если это является слишком дорогостоящим, Вы могли бы сделать сравнения как фоновую задачу и сохранить n-most-similiar в самом поле базы данных.
Другой подход должен понять что-то вроде структуры (латинских) языков. Если Вы разделяете короткий (non-capitialised или заключенный в кавычки) слова и присваиваете веса словам (или префиксы), которые распространены или уникальны, можно сделать Bayesianesque сравнение. Два после рецензий на книгу могли бы быть simiplied и найденный быть similiar:
3) "Французской революцией была и тому подобное Война и мир и тому подобное Франция".-> Франция/Французский язык (2) Оборот (1) война (1) Мир (1) (отмечают, что словарь использовался для объединения Франции и французского языка)
4) "Эта книга является и тому подобное революцией во французской кухне".-> Франция (1) Оборот (1)
Для реализации этого Вы хотели бы определить 'ключевые слова' в обзоре, когда это было создано/обновлено, и найти, что обзоры similiar используют эти ключевые слова в где-пункте запроса (идеально 'полнотекстовый' поиск если поддержка БД это), с, возможно, последующей обработкой установленного на результаты для выигрыша кандидатов нашел.
Книги также имеют категории - триллеры установлены во Франции similiar к историческим исследованиям Франции и так далее? Метаданные вне заголовка и текста могли бы быть полезны для хранения релевантных результатов.
Возможно, что Ваш поиск является чем-то, что делает перефразирование . У меня только есть поверхностное знание этого, но перефразирование обработка естественного языка понятие, чтобы определить, если два прохода текста на самом деле средний то же самое - хотя можение используют полностью другие слова.
, К сожалению, я не знаю ни о каких инструментах, которые позволяют Вам делать это (хотя я интересовался бы нахождением одного)