Пользовательский поиск использует MySQL LIKE или интегрирует поисковик (например, solr, sphinx, lucene и т. Д.) - PullRequest
1 голос
/ 23 сентября 2011

В моей базе данных mysql у меня есть таблица пользователей, состоящая из 37 000 (или около того) пользователей.

Когда пользователь ищет другого пользователя на сайте, я выполняю простой подстановочный знак (например, LIKE '{name).}%}), чтобы вернуть найденных пользователей.

Было бы эффективнее и быстрее использовать поисковую систему, такую ​​как solr, для выполнения моих поисков LIKE?более того?Я полагаю, что в solr я могу использовать подстановочные запросы (http://www.lucidimagination.com/blog/2009/09/08/auto-suggest-from-popular-queries-using-edgengrams/)

Если честно, в данный момент использование LIKE-запроса не так уж и медленно, однако по мере роста числа пользователей оно будет замедляться.Любые советы или рекомендации с благодарностью.

Ответы [ 4 ]

1 голос
/ 23 сентября 2011

У нас была похожая ситуация около месяца назад, наша база данных была примерно 33k ~, и из-за того, что наш движок был InnoDB, мы не могли использовать функцию полнотекстового поиска MySQL (что довольно тупо).

Мы решили внедрить sphinxsearch (http://www.sphinxsearch.com)), и мы действительно впечатлены результатами (я стал его фанатом).

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

Хотя мы давно не использовали его - если вы собираетесь строить дляв будущем я бы порекомендовал сфинкса.

0 голосов
/ 23 сентября 2011

Это на самом деле уже встроено в MySQL: http://dev.mysql.com/doc/refman/5.0/en/fulltext-search.html

0 голосов
/ 23 сентября 2011

мы используем solr для этой цели, так как вы можете искать в течение 1-2 мс, даже если проиндексированы миллионы документов.мы зеркально отражаем наш экземпляр mysql с помощью Data Import Handler , а затем ищем в Solr.

, как указывал Невилл, полнотекстовый поиск встроен в mysql, но выполнение solr весьма кстати.лучше, так как он родился как полнотекстовая поисковая система

0 голосов
/ 23 сентября 2011

Вы можете ускорить, если поисковое слово должно иметь не менее 3 символов, чтобы начать поиск и индексировать поисковый столбец с размером индекса 3 символа.

...