Я использовал модуль поиска Apache Solr в Drupal 6 и смотрю на API поиска для установки Drupal 7. Я видел некоторое обсуждение здесь, но я ищу какие-либо причины для выбора одного или другого.
Есть ли причина выбирать один над другим? Если так, то почему или нет? Я слышал, что могут быть проблемы со сложностью и / или проблемы с производительностью API поиска. Это правда?
Ответы:
С 2015 года мы можем сравнивать API поиска с модулями поиска Apache Solr по номерам:
что указывает на четкий выбор. API поиска был разработан спустя 3 года, и ему удалось воспользоваться преимуществами своего конкурента.
Более того, Search API предоставляет совершенно другую и более гибкую архитектуру и поддерживается более активно. Что еще более важно, он уже поддерживает новейшие Drupal 8 и Solr 5.x, которых у Apachesolr пока нет.
API поиска начался заново и более гибок в своей конфигурации, включая поддержку Views (для Apachesolr вам необходим дополнительный модуль). Есть также много модулей, которые расширяют его функциональность.
Во-вторых, чтобы избежать некоторых проблем, решаемых сообществом дважды из-за различий в архитектуре этих модулей, в настоящее время предпринимаются некоторые совместные усилия между этими двумя проектами, такие как:
Источник: Battleplan for Search & Solr в Drupal 8 в Acquia
Обратите внимание, что не рекомендуется использовать оба модуля в одной среде.
Для дальнейшего технического анализа различий, пожалуйста, проверьте детали ниже.
API поиска
Обзор API:
Основано на Entity API
Особенности расширения:
Базовая структура:
Особенности индекса:
На основе Entity API:
Как настроить свой индекс - поля:
Search API Views:
По умолчанию: данные, полученные с помощью загрузки объекта
Поиск рецептов API:
Крючки для добавления
Крюк срабатывает при индексации предметов
Apachesolr
Особенности расширения:
Рецепты Apachesolr:
Источник: Search API против Apachesolr слайд-шоу
Смотрите также:
источник
Я пытался использовать оба, и я могу сказать следующее: это зависит от вашей ситуации.
В настоящее время стабильная версия 7 модуля интеграции ApacheSolr может индексировать только узлы. Поэтому, если у вас есть неузловые сущности, которые вам нужно проиндексировать, вы должны использовать для этого многозадачный патч, который еще не завершен . При правильной настройке ApacheSolr Integration может хранить много разных данных контента.
API поиска выполняет индексирование, и для него написано много замечательных вещей. Однако API поиска выбирает только идентификатор данных, которые вы ищете. Это означает, что для загрузки большего количества данных, кроме идентификатора, потребуется entity_load, попадание в вашу базу данных или любой другой уровень кэширования, который вы установили. Для сайтов с интенсивным поиском это может быть не самым оптимальным решением.
Вот отличная презентация на drupalcon chicago о модуле интеграции ApacheSolr, минута 16 для упоминания в Search API.
источник
Я думаю, что вы действительно должны попробовать оба и принять обоснованное решение. Но учтите, что у apachesolr до сих пор нет бета-версии для Drupal 8.
В API поиска вы не можете объединять объекты в одном индексе SearchAPI. Так что Профили, Пользователи, Узлы находятся на разных индексах. Есть модуль, позволяющий выполнять многоиндексный поиск, он не покрывал мои потребности, но YMMV. Если у вас много типов контента и много полей в одном индексе, определение индекса может стать довольно громоздким. (NB SearchAPI D8 отчеты для поддержки многоиндексного поиска)
Apachesolr позволяет редактировать поля для каждого контента, что может быть проще, но не имеет возможности добавлять связанный контент в документ, фактически нужно написать собственный код для включения информации из коллекций полей, ссылок и некоторых других поля. Apachesolr D7 не поддерживает ajax, если вы не используете представления, но при использовании представлений вы теряете фасеты. Тем не менее, изменение информации, хранящейся в индексе, довольно легко, если вы довольны кодированием в хуках.
Идея поиска идентификаторов сущностей и последующего рендеринга каждого из них по отдельности (может использоваться обоими модулями) может показаться кошмаром производительности, но если вы кешируете отображение своей сущности, это может оказаться более эффективным, чем рендеринг из ответа solr.
источник