Выбор отдельного сервера полнотекстового поиска: Sphinx или SOLR?
Я ищу автономный сервер полнотекстового поиска со следующими свойствами:
- Должен работать в качестве автономного сервера, который может обслуживать поисковые запросы от нескольких клиентов
- Должен быть в состоянии выполнить "массовую индексацию" путем индексации результата запроса SQL: скажем "SELECT id, text_to_index FROM documents;"
- Должно быть свободным программным обеспечением и должно работать на Linux с MySQL в качестве базы данных
- Должно быть быстрым (исключает внутренний полнотекстовый поиск MySQL)
Я нашел альтернативы, которые имеют эти свойства:
- Solr (по материалам Lucene)
- ElasticSearch (также основанный на Lucene)
- сфинкс
Мои вопросы:
- Как они сравниваются?
- Я пропустил какие-либо альтернативы?
- Я знаю, что каждый вариант использования индивидуален, но есть ли определенные случаи, когда я определенно не хотел бы использовать определенный пакет?
5 ответов
Я успешно использую Solr уже почти 2 года, и никогда не использовал Sphinx, поэтому я явно предвзят. Однако я постараюсь сохранить объективность, цитируя документы или других людей. Я также возьму патчи к моему ответу:-)
сходства:
- И Solr, и Sphinx удовлетворяют всем вашим требованиям. Они быстрые и предназначены для эффективного индексирования и поиска больших массивов данных.
- Оба имеют длинный список сайтов с высоким трафиком, использующих их ( Solr, Sphinx)
- Оба предлагают коммерческую поддержку. ( Solr, Sphinx)
- Оба предлагают привязки клиентского API для нескольких платформ / языков ( Sphinx, Solr)
- Оба могут быть распределены для увеличения скорости и емкости ( Sphinx, Solr)
Вот некоторые отличия:
- Solr, будучи проектом Apache, очевидно, имеет лицензию Apache2. Сфинкс - это GPLv2. Это означает, что если вам когда-либо потребуется внедрить или расширить (а не просто "использовать") Sphinx в коммерческом приложении, вам придется купить коммерческую лицензию ( обоснование)
- Solr легко встраивается в приложения Java.
- Solr построен на основе Lucene, проверенной технологии более 8 лет с огромной пользовательской базой (это только малая часть). Всякий раз, когда Lucene получает новую функцию или ускорение, Solr получает ее тоже. Многие разработчики, работающие с Solr, также являются приверженцами Lucene.
- Sphinx более тесно интегрируется с RDBMS, особенно с MySQL.
- Solr может быть интегрирован с Hadoop для создания распределенных приложений
- Solr может быть интегрирован с Nutch, чтобы быстро создать полноценную систему веб-поиска с гусеничным механизмом.
- Solr может индексировать собственные форматы, такие как Microsoft Word, PDF и т. Д. Сфинкс не может.
- Solr поставляется с проверкой орфографии из коробки.
- Solr поставляется с фасеточной поддержкой из коробки. Огранка в Сфинксе требует больше работы.
- Sphinx не допускает частичного обновления индекса для полевых данных.
- В Sphinx все идентификаторы документов должны быть уникальными ненулевыми целыми числами без знака. Solr даже не требует уникального ключа для многих операций, а уникальные ключи могут быть целыми числами или строками.
- Solr поддерживает свертывание полей (в настоящее время только как дополнительный патч), чтобы избежать дублирования похожих результатов. Сфинкс, кажется, не предоставляет никакой возможности, подобной этой.
- В то время как Sphinx предназначен только для получения идентификаторов документов, в Solr вы можете напрямую получать целые документы практически с любыми данными, что делает его более независимым от любого внешнего хранилища данных и экономит дополнительную информацию.
- Solr, за исключением случаев использования встроенного, запускается в веб-контейнере Java, таком как Tomcat или Jetty, которые требуют дополнительной специальной настройки и настройки (или вы можете использовать включенный Jetty и просто запустить его с
java -jar start.jar
). Сфинкс не имеет дополнительной конфигурации.
Смежные вопросы:
Если вам не нужно расширять функциональность поиска любым запатентованным способом, Sphinx - ваш лучший выбор.
Преимущества сфинкса:
- Разработка и настройка быстрее
- Гораздо лучше (и быстрее) агрегация. Это была убийственная особенность для нас.
- Не XML. Это то, что в конечном итоге исключило Solr для нас. Нам пришлось возвращать довольно большие наборы результатов (например, сотни результатов), а затем агрегировать их самостоятельно, так как агрегация Solr отсутствовала. Количество времени для сериализации в и из XML просто убивает производительность. Для небольших наборов результатов, тем не менее, это было прекрасно.
- Лучшая документация, которую я видел в приложении с открытым исходным кодом
Преимущества Solr:
- Может быть продлен.
- Можно выполнить поиск прямо из веб-приложения, т. Е. Можно выполнить поиск, подобный автозаполнению, на сервере Solr напрямую через AJAX.
Примечание: есть много пользователей с таким же вопросом.
Итак, чтобы ответить на вопрос:
Который и почему?
Используйте Solr, если вы собираетесь использовать его в своем веб-приложении (пример поисковой системы сайта). Это определенно получится здорово благодаря его API. Вам определенно понадобится эта сила для веб-приложения.
Используйте Sphinx, если вы хотите быстро найти тонны документов / файлов. Он тоже очень быстро индексирует. Я бы порекомендовал не использовать его в приложении, которое использует JSON или синтаксический анализ XML для получения результатов поиска. Используйте его для прямого поиска в дБ. Отлично работает на MySQL.
альтернативы
Хотя это гиганты, их гораздо больше. Кроме того, есть те, которые используют их для питания своих пользовательских платформ. Итак, я бы сказал, что вы действительно не пропустили ни одного. Хотя есть один поиск, который имеет хорошую базу пользователей.
Я использую Sphinx уже почти год, и это было удивительно. Я могу проиндексировать 1,5 миллиона документов примерно за минуту на моем MacBook и даже быстрее на сервере. Я также использую Sphinx, чтобы ограничить поиск местами в определенных широтах и долготах, и это очень быстро. Кроме того, то, как ранжируются результаты, очень легко настраивается. Простота установки и настройки, если вы прочитали учебник или два. Почти 1.0 статус, но их Кандидаты в Релиз были отличными.
Lucene / Solr, кажется, более выдающийся и с более долгими годами в бизнесе и намного более сильным сообществом пользователей. imho, если вы можете преодолеть начальные проблемы с настройкой, как некоторые, возможно, сталкивались (не мы), то я бы сказал, что Lucene / Solr - ваш лучший выбор.