Выбор автономного сервера полнотекстового поиска: Sphinx или SOLR? [закрытый]
Я ищу автономный сервер полнотекстового поиска со следующими свойствами:
- должны работать как автономный сервер, который может обслуживать запросы от нескольких клиентов
- должен быть в состоянии сделать "массовую индексацию" путем индексирования результата SQL-запроса: скажите " выберите id, text_to_index из документов;"
- должно быть свободным программным обеспечением и должно работать на Linux с MySQL в качестве базы данных
- должен быть быстрым (исключает внутренний MySQL полнотекстовый поиск)
альтернативы, которые я нашел, имеют следующие свойства:
- Solr (на основе Люсена)
- ElasticSearch (также на основе Lucene)
- Сфинкс
мои вопросы:
- как они соотносятся?
- я пропустил какие-либо альтернативы?
- Я знаю, что каждый случай использования отличается, но есть ли определенные случаи, когда я определенно не хотите использовать определенный пакет?
5 ответов
Я успешно использую Solr уже почти 2 года и никогда не использовал Sphinx,поэтому я, очевидно, предвзят. Однако я постараюсь сохранить объективность, цитируя документы или других людей. Я также возьму патчи к моему ответу: -)
сходство:
- и Solr и Сфинкс удовлетворяют все ваши требования. Они быстры и предназначены для эффективного индексирования и поиска больших объемов данных.
- оба имеют длинный список сайтов с высоким трафиком, используя их (Solr, Сфинкс)
- оба предлагают коммерческую поддержку. (Solr, Сфинкс)
- оба предлагают привязки API клиента для нескольких платформ / языков (Сфинкс, Solr)
- оба можно распределить для увеличения скорости и емкости (Сфинкс, Solr)
вот некоторые различия:
- Solr, будучи Проект Apache, очевидно, apache2-лицензирован. Сфинкс в GPLv2. Это означает, что если вам когда-либо понадобится внедрить или расширить (а не просто "использовать") Sphinx в коммерческое приложение, вам придется купить коммерческую лицензию (обоснование)
- Solr это легко встраиваемым в Java-приложения.
- Solr построено поверх Lucene, которое доказанная технология над 8 лет С огромный пользователь база (это только малая часть). Всякий раз, когда Lucene получает новую функцию или ускорение, Solr получает его тоже. Многие из разработчиков, совершающих Solr, также являются Lucene committers.
- Sphinx интегрируется более тесно с RDBMSs, особенно MySQL.
- Solr может быть интегрирован с Hadoop для создания распределенных приложений
- Solr может быть интегрированный с Nutch быстро построить полноценную поисковую систему с краулер!--10-->.
- Гумз может индексируйте проприетарные форматы, такие как Microsoft Word, PDF и т. д.. Сфинкс!--67-->не могу.
- Solr поставляется с проверка орфографии из коробки.
- Solr поставляется с поддержка фасета из коробки. Фасетка в Сфинксе нужно больше работать.
- Sphinx не разрешает частичное обновление индекса для полевых данных.
- В Sphinx, все идентификаторы документов должны быть уникальными беззнаковыми ненулевыми целыми числами. Solr даже не требует уникального ключа для многих операций, а уникальными ключами могут быть целые числа или строки.
- Solr поддерживает поле коллапсирующей (в настоящее время как дополнительный патч), чтобы избежать дублирования аналогичных результатов. Сфинкс, похоже, не предоставляет такой функции.
- пока Sphinx предназначен только для извлечения документа ids, в Solr вы можете сразу получить все документы с довольно много любого вида данных, делая его более независимым любого внешнего магазина данных и оно сохраняет экстренное туда и обратно.
- Solr, за исключением случаев использования встроенного, работает в Java веб-контейнер как Tomcat или пристань, которые требуют дополнительная конкретная конфигурация и настройка (или вы можете использовать в комплекте причал и просто запустите его с
java -jar start.jar
). У Sphinx нет дополнительных конфигурация.
вопросы:
Если вам не нужно расширить функциональность поиска каким-либо собственническим способом, Sphinx-ваш лучший выбор.
Сфинкс преимущества:
- разработка и настройка быстрее
- гораздо лучше (и быстрее) агрегации. Для нас это было убийственно.
- не XML. Это то, что в конечном счете исключило Solr для нас. Мы должны были вернуть довольно большие результирующие наборы (думаю, сотни результатов), а затем агрегировать их сами, так как агрегация Solr была недостающий. Количество времени для сериализации в XML и из XML просто абсолютно убивает производительность. Для небольших наборов результатов, это было прекрасно.
- лучшая документация, которую я видел в приложении с открытым исходным кодом
преимущества Solr:
- может быть продлен.
- может попасть прямо из веб-приложения, т. е. вы можете иметь автозаполнение, как поиск ударил сервер Solr непосредственно через AJAX.
Примечание: есть много пользователей с таким же вопросом в голове.
Итак, чтобы ответить на вопрос:
что и почему?
использовать Solr если вы собираетесь использовать его в своем веб-приложении(пример-поисковая система сайта). Это, безусловно, окажется отличным, благодаря его API. Вам определенно понадобится эта сила для веб-приложения.
использовать Сфинкс если вы хотите искать через тонн документов/файлов очень быстро. Он индексирует очень быстро. Я бы рекомендовал не использовать его в приложении, которое включает JSON или синтаксический анализ XML для получения результатов поиска. Используйте его для прямого поиска БД. Он отлично работает на MySQL.
варианты
хотя это гиганты,есть еще много. Кроме того, есть те, которые используют их в своих пользовательских рамок. Так что я бы сказал, что ты ничего не пропустил. Хотя есть один elasticsearch это имеет хорошую базу пользователей.
Я использую Сфинкс уже почти год, и это было удивительно. Я могу индексировать 1,5 миллиона документов примерно за минуту на моем MacBook и еще быстрее на сервере. Я также использую Сфинкс, чтобы ограничить поиск местами в определенных широтах и долготах, и это очень быстро. Кроме того, как результаты ранжируются очень tweakable. Простота установки и установки, если Вы читаете учебник или два. Почти 1.0 статус, но их кандидатуры были солидные.
Lucene / Solr, как представляется, более признакам и с более длительными годами в бизнесе и гораздо более сильным сообществом пользователей. imho если вы можете пройти мимо первоначальных проблем установки, как некоторые, похоже, столкнулись (не мы), то я бы сказал, что Lucene / Solr-ваш лучший выбор.