Проблема: Нужно искать предложение в базе данных из миллионов предложений? - PullRequest
1 голос
/ 06 декабря 2010

Итак, я буду хранить миллионы предложений в базе данных, каждое с автором. Мне нужно уметь эффективно искать предложение и возвращать автора. Теперь я хотел бы иметь возможность неправильно ввести слово или забыть слово или два в этом предложении, и чтобы приложение по-прежнему могло соответствовать (fuzzy-esque). Может кто-то указать мне верное направление? Как Google это делает? Потому что я могу искать слова в Google, например, и он вернет песню с текстом? Я хочу сделать то же самое?

Спасибо всем.

Если нечеткость делает вещи слишком сложными, тогда я могу иметь дело только с эффективным поиском предложений.

Ответы [ 5 ]

1 голос
/ 06 декабря 2010

Если вы пишете на Java, вы можете попробовать Lucene .

Разве это не должен быть "документ" и автор вместо отдельных предложений?

0 голосов
/ 06 декабря 2010

Как Google это делает?

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

0 голосов
/ 06 декабря 2010

Для проверки полнотекстового поиска инвертированный индекс структура данных.

Вот как это делают поисковые системы

образцы кода

ОБНОВЛЕНИЕ: также, если вы работаете над распределенной системой, проверьте Hadoop - альтернатива с открытым исходным кодом для MapReduce

от Goolge *
0 голосов
/ 06 декабря 2010

Действительно, нечеткое сопоставление - непростая задача, хотя некоторые базы данных реализуют нечеткий поиск в зависимости от используемого метода и ваших данных, ваши результаты могут отличаться.Вот ссылка, которая объясняет нечеткие поиски в SQL-сервере

http://msdn.microsoft.com/en-us/magazine/cc163731.aspx

Что касается поиска предложений, большинство движков БД реализуют полнотекстовый поиск / индексацию, на которую вы можете захотеть взглянуть ...Это идет с компромиссами с точки зрения производительности и хранения, но вы можете посмотреть на это

0 голосов
/ 06 декабря 2010

Полнотекстовая индексация на SQL Server или Oracle будет наиболее подходящей для вас сразу после установки.Они могут размыться, использовать корни слов и другие умные вещи.Я не могу комментировать другие движки БД, хотя в быстрых гугл-шоу у большинства будет что-то похожее.По некоторым причинам я ожидаю, что они будут более ограничены в нечеткости.

...