Поиск API vs Apache Solr Интеграция поиска в Drupal 7?

Я использовал модуль Apache Solr Search Integration в Drupal 6 и смотрю API поиска для установки Drupal 7. Я видел несколько дискуссий здесь , но я ищу причины для выбора того или другого. Кто-нибудь идет в эту презентацию ?

В соответствии с комментарием, вот более конкретный вопрос:

Есть ли причина выбора одного над другим? Если да, то почему или почему нет? Я слышал, что в Search API могут возникать проблемы сложности и /или проблемы с производительностью. Это правда?

31 голос | спросил hross 15 22011vEurope/Moscow11bEurope/MoscowTue, 15 Nov 2011 17:03:46 +0400 2011, 17:03:46

6 ответов


17

По состоянию на 2015 год мы можем сравнить поисковые модули Search API и Apache Solr с цифрами:

| Поиск Apache Solr | Поиск API
Опубликовано в: | 2007 | 2010
Загрузок: 0 |> 2k | > 20k
Сообщенные установки: |> 21k | > 64k
Всего ошибок: |> 1200 | > 600
Активные ошибки: |> 200 | > 170
Выполняет: |> 1,3k | > 1.5k

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

Кроме того, Search API предоставляет совершенно другую и более гибкую архитектуру, и она поддерживается более активно. Что более важно, оно уже поддерживает новейшие Drupal 8 и Solr 5.x, которые Apacheolr еще не существует.

API поиска запущен свежими, и он более гибкий в своей конфигурации, включая поддержку Views (для Apacheolr вам нужен дополнительный модуль). Существует также множество модулей, расширяющих функциональность.

Во-вторых, чтобы избежать некоторых проблем, решаемых сообществом дважды из-за различий в архитектуре этих модулей, в настоящее время есть несколько совместных усилий между этими двумя проектами, такими как:

  • создание общего способа отображения фасетных блоков через Facet API (также известный как фильтры)
  • общие файлы конфигурации и файла конфигурации solrconfig.xml,
  • оба сопровождающих работали вместе и перенесли классы соединений из модуля поиска Apache Solr в Search API.

Источник: Battleplan for Search & Solr в Drupal 8 в Acquia

Обратите внимание, что не рекомендуется использовать оба модуля в одной и той же среде.

Для дальнейшего технического анализа различий, пожалуйста, проверьте подробности ниже.

API поиска

Обзор API:

  • Рамка для легкого создания поисковых запросов
  • Тезисы из источников данных и реализации бэкэнд
  • Большая экосистема с расширениями, например. бэкэнды
  • Интеграция API Facet
  • Сильно основанный на Entity API

    • Предоставляет метаданные
    • Используется для конфигурации индекса и сервера.

Функции расширения:

  • Автозаполнение API поиска
  • Приложения
  • Сохраненные поиски
  • Местоположение
  • Довольно Facets Paths
  • Ползунок (диапазоны поиска API)
  • и многие другие.

Основная структура:

Основная структура модуля поиска API Solr

Особенности индекса:

  • Различные источники данных
  • Один источник данных: объекты
  • На основе Entity API:

    • Каждое свойство может быть проиндексировано
    • Свойства связанных объектов могут быть проиндексированы

Как настроить поля индекса:

Как настроить поля индекса в Search API Solr

Виды API поиска:

  • Поддержка Full Views.
  • Отобразить любое свойство объекта
  • Используйте любое индексированное поле в качестве фильтра, аргумента или сортировки
  • Большинство кодов на основе интеграции представлений Entity API
  • По умолчанию: данные, полученные при загрузке объекта

    • Можно обойти («Получить данные из Solr» на сервере)
  • Альтернатива: страницы API поиска

Рецепты API поиска:

  • CRUD-крючки для индексов и серверов
  • Крючки для добавления

    • источники данных
    • движки
    • изменения данных
    • процессоры
  • Крюк запускается при индексировании элементов

  • Крюк запускается при выполнении поиска

Apachesolr

Функции расширения:

  • Вложения (без поддержки мультимедиа, настраиваемого кодирования для вложений в другие объекты)
  • Местоположение (Apacheolr geo, местоположение Apachesolr)

Рецепты Apacheolr:

  • Платформа для поиска с открытым исходным кодом
  • Apache Foundation
  • Полнотекстовый поиск, выделение, фасетный поиск, кластеризация, обработка документов с большим количеством документов.
  • Распределенные
  • Репликация /масштабируемый
  • Java
  • REST HTTP и ответы в XML /JSON и некоторые другие
  • Не Relational

Источник: Search API vs Apacheolr слайд-шоу


См. также:

ответил kenorb 19 Maypm15 2015, 20:50:15
23

Я пробовал использовать оба варианта, и я могу сказать следующее: это зависит от вашей ситуации.

В настоящее время стабильная версия 7 модуля интеграции ApacheSolr может только индексировать узлы. Поэтому, если у вас есть не-узловые объекты, которые вам нужно индексировать, вы должны использовать патч для multientity . Интеграция ApacheSolr может хранить много разных данных контента при правильной настройке.

API поиска API индексирует и имеет много замечательных вещей, написанных для него. Однако API поиска только извлекает идентификатор данных, которые вы ищете. Это означает, что для загрузки любых других данных, кроме идентификатора, потребуется объект entity_load, попавший в вашу базу данных или любой другой слой кэширования, который вы установили на место. Для поисковых сайтов это может быть не самое оптимизированное решение.

Здесь - отличная презентация, представленная в drupalcon chicago о модуле интеграции ApacheSolr, минута 16 для упоминания в API поиска.

ответил LSU_JBob 16 32011vEurope/Moscow11bEurope/MoscowWed, 16 Nov 2011 00:05:45 +0400 2011, 00:05:45
2

Я бы не предложил solr для многоязычного поиска. Зависит от того, насколько важен поиск многоязычного поиска solr, который может занимать много времени.

Настройка может быть болезненной. Для многоязычного поиска ваш язык должен поддерживаться solr. Существуют грамматические правила, которые должны быть установлены для вашего языка. Также вам нужно установить java и solr, чтобы вы не могли использовать дешевый общий хостинг.

Если вы разрабатываете поисковую систему, вы можете ее использовать. Если вы вычисляете ресурсы разработки, тогда поиск сайта Google Payd может быть лучшим вариантом! Я даже являюсь соавтором для gss modulep

ответил ram4nd 16 32011vEurope/Moscow11bEurope/MoscowWed, 16 Nov 2011 00:59:10 +0400 2011, 00:59:10
1

Я думаю, вам действительно нужно попробовать и принять обоснованное решение. Но учтите, что у apacheolr до сих пор нет бета-версии для Drupal 8.

В Search API вы не можете комбинировать объекты с одним и тем же индексом SearchAPI. Итак, профили, пользователи, узлы находятся на разных индексах. Существует модуль, позволяющий выполнять поиск по нескольким индексам, он не охватывает мои потребности, но YMMV. Если у вас много типов контента и много полей в одном и том же индексе, определение индекса может стать довольно неудобным. (NB SearchAPI D8 сообщает для поддержки поиска нескольких индексов)

Apachesolr позволяет редактировать поля на основе контента, что может быть проще, но не имеет возможности добавлять связанный контент в документ, на самом деле, как ожидается, придется писать какой-то пользовательский код для включения информации из коллекций полей, ссылок и некоторые другие поля. Apacheolr D7 не поддерживает ajax, если вы не используете представления, но используете виды, которые вы теряете. Тем не менее ... изменение информации, хранящейся в индексе, довольно просто, если вы счастливы кодировать в hooks.

Идея поиска идентификаторов сущностей, а затем рендеринга каждого из них по отдельности (может использоваться обоими модулями), по-видимому, является кошмаром производительности, но если вы кэшируете свои сущности, это может быть более эффективным, чем рендеринг из solr.

ответил dmcg 19 Maypm15 2015, 22:56:25
0

Одна из вещей, которые мне приходилось приходить в Apache Solr по сравнению с Search API, заключалась в поиске нескольких фильтров. С Search API это казалось невозможным. У Солра, похоже, был этот вариант.

ответил user219492 6 FriEurope/Moscow2013-12-06T01:50:51+04:00Europe/Moscow12bEurope/MoscowFri, 06 Dec 2013 01:50:51 +0400 2013, 01:50:51
0

Я бы упомянул о поддержке Multi-Site: SearchAPI не поддерживает многосайтов (используя тот же индекс SOLR для хранения содержимого нескольких сайтов). Apachesolr, вместо этого позволяют: 1. индексировать множественные уровни содержания в одном и том же индексе SOLR 2. фильтровать результаты на определенном сайте 3. выполнять поиск только на локальном сайте, отфильтровывая результаты с других сайтов

ответил thePanz 18 FebruaryEurope/MoscowbTue, 18 Feb 2014 21:18:29 +0400000000pmTue, 18 Feb 2014 21:18:29 +040014 2014, 21:18:29

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132