полнотекстовый поиск с правописанием изменений / ошибок - PullRequest
0 голосов
/ 19 сентября 2010

У нас есть много объектов, и каждый объект имеет около 100-200 слов описания.(например, имя автора книги и небольшое резюме).

Пользователь вводит слова в виде последовательности.Как реализовать поиск с приблизительным текстом и незначительными правописаниями?Например, «Joshua Bloch», «Joshua Blosh», «Joshua block» могут привести к тому же текстовому результату.

Ответы [ 6 ]

1 голос
/ 19 сентября 2010

Вместо Lucene , пожалуйста, отметьте Solr .Lucene - это библиотека, которую вы можете использовать для встраивания функции поиска в ваше приложение.Solr - это актуальная реализация Lucene, которую вы можете напрямую подключить к своему приложению через API.Для большинства систем Solr избавит от сложности со Lucene.

1 голос
/ 19 сентября 2010

Вы можете использовать проверку орфографии JOrtho .Из контекста в вашей базе данных вы можете создать собственный словарь и установить его.Тогда все слова, которых нет в словаре и нет в вашей базе данных, помечаются как неправильные.

1 голос
/ 19 сентября 2010

Если вы ищете реальную реализацию этой функции, вот замечательная программа, написанная Питером Норвигом: http://norvig.com/spell-correct.html

Она также имеет ссылки на реализации на многих других языках, включая Java, C и т. Д.

1 голос
/ 19 сентября 2010

Если вы используете Lucene для полнотекстового поиска, есть расширение " Возможно, вы имели в виду ", это, вероятно, то, что вам нужно.

1 голос
/ 19 сентября 2010

Как реализовать поиск с приблизительным текстом и незначительными правописаниями? Например, «Joshua Bloch», «Joshua Blosh», «Joshua block» могут привести к одинаковому текстовому результату.

Поддерживает ли ваша база данных Soundex? Soundex будет соответствовать подобным звучащим словам, которые, кажется, соответствуют приведенному выше примеру. Даже если ваша база данных не имеет собственного soundex, вы все равно можете написать реализацию и сохранить soundex для каждого имени автора в отдельном поле. Это может быть использовано для сопоставления позже.

Однако Soundex не является заменой для полнотекстового поиска; это поможет только в определенных случаях, как имя автора. Если вы ищете какой-то конкретный текст, скажем, из книги, значит, вам лучше использовать полнотекстовый поиск (например, Postgresql's ).

0 голосов
/ 19 сентября 2010

Apache Lucene может соответствовать вашему счету.Это высокопроизводительная полнофункциональная библиотека для поисковых систем, полностью написанная на Java.

...