MySql Полный текст или Sphinx или Lucene или что-нибудь еще? - PullRequest
1 голос
/ 09 февраля 2011

В настоящее время я использую MySql и у меня есть несколько таблиц, по которым мне нужно выполнить логический поиск. Учитывая тот факт, что мои таблицы относятся к типу Innodb, я обнаружил, что один из лучших способов сделать это - использовать Sphinx или Lucene. Я сомневаюсь в их использовании, мои запросы имеют следующий формат,

Select count(*) as cnt, DATE_FORMAT(CONVERT_TZ(wrdTrk.createdOnGMTDate,'+00:00',:zone),'%Y-%m-%d') as dat from t_twitter_tracking wrdTrk  where  wrdTrk.word like (:word) and   wrdTrk.createdOnGMTDate between :stDate and :endDate group by dat;

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

Теперь, если я перейду на Sphinx / lucene, я смогу получить результат, аналогичный приведенному выше запросу. Я новичок в Сфинксе, какой из этих двух я должен использовать или есть что-нибудь лучше.

На самом деле groupby и поиск 'wrdTrk.word like (: word)' являются основной частью моего запроса, и мне нужно перейти к логическому поиску, чтобы улучшить взаимодействие с пользователем. В моей базе данных приблизительно 23652826 строк, и база данных основана на Innodb, а полнотекстовый поиск MySql не работает.

С уважением Рох

Ответы [ 4 ]

0 голосов
/ 11 марта 2011

сохранить ваш счет в мета-таблице, держать его в курсе.или используйте myisam, который поддерживает свой счет.Mongodb также поддерживает свой счет.кэшировать счет в memcache.считать каждый раз, когда вам нужно знать, что подсчет - это глупое использование ресурсов.

0 голосов
/ 09 февраля 2011

Поскольку вам нужны только цифры, я считаю, что было бы лучше, если бы вы продолжали использовать MySQL.Если у вас есть проблемы с производительностью, я предлагаю вам использовать объяснение () и, возможно, более качественную индексацию для улучшения ваших запросов.Только если полнотекстовый поиск является основной частью вашего варианта использования, вы должны перейти к использованию Sphinx / Solr.

Чтение Полнотекстовая поисковая система и СУБД для более полного ответа.

0 голосов
/ 13 февраля 2011

Да. Сфинкс может сделать это. Я не знаю, что делает LIKE (:word), но вы можете сделать запрос типа @word "exactword" в поиске сфинкса.

0 голосов
/ 09 февраля 2011

только вам нужно правильно проиндексировать данные и получите результат

...