Самый быстрый способ поиска ключевых слов. Любой язык, любая система - PullRequest
0 голосов
/ 16 июня 2009

Ежедневно у меня есть около 5 миллионов уникальных ключевых слов с количеством показов для каждого. Я хочу иметь возможность искать эти ключевые слова по определенным словам, поэтому, например, если у меня есть «ipod nano 4GB», я хочу быть в состоянии извлечь это, если я ищу «ipod», «nano» или «4GB». mySQL не может обрабатывать столько данных для того, что я хочу, я пробовал Berkeley, но, похоже, происходит сбой слишком большого количества строк, и он работает медленнее. Идеи?

Ответы [ 5 ]

2 голосов
/ 17 июня 2009

Я вполне доволен библиотекой поисковой системы Xapian . Хотя это звучит так, как будто это может быть излишним для вашего сценария, возможно, вы просто хотите поместить свои данные в большую хеш-таблицу, например, memcached ?

1 голос
/ 17 июня 2009

A Lucene index может работать. Я использовал его для довольно больших наборов данных раньше. Он разработан на Java, но есть и версия .NET.

1 голос
/ 17 июня 2009

Вы можете попробовать свободный текст на MSSQL. http://msdn.microsoft.com/en-us/library/ms177652.aspx

Пример запроса:

SELECT TOP 10 * FROM searchtable 
INNER JOIN FREETEXTTABLE(searchtable, [SEARCH_TEXT], 'query string') AS KEY_TBL
ON searchtable.SEARCH_ID = KEY_TBL.[KEY] 
ORDER BY KEY_TBL.RANK DESC

Josh

0 голосов
/ 18 июня 2009

Эта рабочая нагрузка и шаблон поиска тривиальны для PostgreSQL с его встроенной функцией полнотекстового поиска (начиная с версии 8.4, которая сейчас находится в статусе RC. До этого это был модуль contrib).

0 голосов
/ 17 июня 2009

Вы пробовали полнотекстовый поиск в MySQL ? Потому что, если вы попробовали это с LIKE сравнением, я понимаю, почему это было медленно:).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...