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