2010-09-19 2 views
0

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

Пользователь вводит ввод как строку для слов. Как реализовать поиск с приблизительным текстом и незначительными изменениями правописания? например, «Джошуа Блоха», «Джошуа blosh», Joshua блок «может привести к такому же текстовому результату.

+0

Я не знаю много о проверке орфографии, но я слышал, что фильтр цветения полезен в таких случаях. Проверьте ссылку. http://ipowerinfinity.wordpress.com/2008/03/02/bloom-filters-designing-a-spellchecker/ – Emil

ответ

1

Если вы используете Lucene для полнотекстового поиска, есть расширение «Did you mean», возможно, именно то, что вы хотите.

1

Как осуществить поиск с приблизительным текстом и незначительными изменениями правописания? например„Джошуа Блоха“,» Джошуа blosh «, joshua block» может привести к такому же результату текста.

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

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

1

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

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

0

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

1

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

1

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

Смежные вопросы