it-swarm.com.de

Such-API vs. Apache Solr-Suche

Ich habe das Modul Apache Solr Search in Drupal 6) verwendet und suche in der Such-API nach einem Drupal 7 install. Ich habe einige Diskussionen gesehen hier aber ich suche nach Gründen für die Wahl des einen oder anderen.

Gibt es einen Grund, einen über den anderen zu wählen? Wenn ja, warum oder warum nicht? Ich habe gehört, dass es möglicherweise Komplexitätsprobleme und/oder Leistungsprobleme mit der Such-API gibt. Ist das wahr?

33
hross

Ab 2015 können wir die Such-API mit den Apache Solr-Suchmodulen mit den folgenden Zahlen vergleichen:

                   | Apache Solr Search  | Search API
Posted in:         | 2007                | 2010
Downloads:         | >2k                 | >20k
Reported installs: | >21k                | >64k
Total bugs:        | >1200               | >600
Active bugs:       | >200                | >170
Commits:           | >1.3k               | >1.5k

was auf die klare Wahl hinweist. Die Such-API wurde 3 Jahre später entwickelt und konnte ihren Konkurrenten ausnutzen.

Darüber hinaus bietet die Such-API eine ganz andere und flexiblere Architektur und wird aktiver gepflegt. Was noch wichtiger ist, es unterstützt bereits die neuesten Drupal 8 und Solr 5.x, die Apachesolr noch nicht hat.

Die Such-API wurde neu gestartet und ist flexibler in der Konfiguration, einschließlich der Unterstützung von Ansichten (für Apachesolr benötigen Sie das zusätzliche Modul). Es gibt auch viele Module, die die Funktionalität erweitern.

Zweitens, um zu vermeiden, dass einige Probleme aufgrund unterschiedlicher Architekturen dieser Module von der Community zweimal gelöst werden, gibt es derzeit einige gemeinsame Anstrengungen zwischen diesen beiden Projekten, wie z.

  • erstellen der allgemeinen Methode zum Anzeigen von Facettenblöcken über Facetten-API (auch als Filter bezeichnet),
  • ein allgemeines Schema und Solrconfig.xml-Konfigurationsdateien,
  • beide Betreuer arbeiteten zusammen und migrierten die Verbindungsklassen aus dem Apache Solr Search-Modul in die Such-API.

Quelle: Schlachtplan für Search & Solr in Drupal 8 bei Acquia

Hinweis: Es wird nicht empfohlen, beide Module in derselben Umgebung zu verwenden.

Weitere technische Analysen der Unterschiede finden Sie in den folgenden Details.

Such-API

API-Übersicht:

  • Framework zum einfachen Erstellen von Suchvorgängen
  • Abstracts aus Datenquellen und Backend-Implementierungen
  • Großes Ökosystem mit Erweiterungen, z. Backends
  • Facetten-API-Integration
  • Stark basierend auf der Entity-API

    • Bietet Metadaten
    • Wird für Index- und Serverkonfigurationen verwendet

Erweiterungsfunktionen:

  • Such-API Autocomplete
  • Anhänge
  • Gespeicherte Suche
  • Standort
  • Hübsche Facettenpfade
  • Schieberegler (API-Bereiche durchsuchen)
  • und viele mehr.

Grundstruktur:

Basic Structure of Search API Solr module

Indexfunktionen:

  • Verschiedene Datenquellen
  • Eine Datenquelle: Entitäten
  • Basierend auf der Entity-API:

    • Jede Eigenschaft kann indiziert werden
    • Eigenschaften verwandter Entitäten können indiziert werden

So konfigurieren Sie Ihre Indexfelder:

How to configure your index - fields in Search API Solr

API-Ansichten durchsuchen:

  • Full Views-Unterstützung
  • Zeigen Sie eine beliebige Eigenschaft einer Entität an
  • Verwenden Sie ein indiziertes Feld als Filter, Argument oder Sortierung
  • Der meiste Code basiert auf der Integration der Entity API-Ansichten
  • Standardmäßig: Daten, die über das Laden der Entität abgerufen werden

    • Kann umgangen werden (Einstellung "Daten von Solr abrufen" im Server)
  • Alternative: API-Seiten durchsuchen

API-Rezepte suchen:

  • CRUD-Hooks für Indizes und Server
  • Haken zum Hinzufügen

    • datenquellen
    • backends
    • datenänderungen
    • prozessoren
  • Der Haken wurde beim Indizieren von Elementen ausgelöst

  • Der Hook wurde beim Ausführen einer Suche ausgelöst

Apachesolr

Erweiterungsfunktionen:

  • Anhänge (keine Medienunterstützung, benutzerdefinierte Codierung für Anhänge an andere Entitäten)
  • Standort (Apachesolr geo, Apachesolr Standort)

Apachesolr Rezepte:

  • Open Source Enterprise Search Platform
  • Apache Foundation
  • Volltextsuche, Hervorhebung, Facettensuche, Clustering, Rich Document Handling
  • Verteilt
  • Replikation/skalierbar
  • Java
  • REST HTTP und Antworten in XML/JSON und einigen anderen
  • Nicht relational

Quelle: Search API vs Apachesolr Diashow


Siehe auch:

19
kenorb

Ich habe versucht, beide zu verwenden, und ich kann Folgendes sagen: Es hängt von Ihrer Situation ab.

Derzeit kann die stabile Version 7 des ApacheSolr-Integrationsmoduls nur Knoten indizieren. Wenn Sie also Nicht-Knoten-Entitäten haben, die Sie indizieren müssen, müssen Sie den noch laufenden Multientity Patch dafür verwenden. Die ApacheSolr-Integration kann bei ordnungsgemäßer Konfiguration viele verschiedene Inhaltsdaten speichern.

Die Such-API indiziert Entites und hat viele wundervolle Dinge dafür geschrieben. Die Such-API ruft jedoch nur die ID der Daten ab, nach denen Sie suchen. Dies bedeutet, dass zum Laden weiterer Daten als der ID eine entity_load erforderlich ist, die auf Ihre Datenbank oder die von Ihnen eingerichtete Caching-Ebene trifft. Für suchintensive Websites ist dies möglicherweise nicht die am besten optimierte Lösung.

Here ist eine großartige Präsentation auf drupalcon chicago über das ApacheSolr-Integrationsmodul, Minute 16 für Erwähnungen zur Such-API.

24
LSU_JBob

Ich denke, man muss wirklich beides versuchen und eine fundierte Entscheidung treffen. Bedenken Sie jedoch nachdrücklich, dass Apachesolr noch keine Beta für Drupal 8) hat.

In der Such-API können Sie keine Entitäten im selben SearchAPI-Index kombinieren. Profile, Benutzer und Knoten befinden sich also in unterschiedlichen Indizes. Es gibt ein Modul, das die Suche nach mehreren Indizes ermöglicht. Es deckte nicht meine Bedürfnisse ab, sondern YMMV. Wenn Sie viele Inhaltstypen und viele Felder im selben Index haben, kann die Indexdefinition ziemlich unhandlich werden. (NB SearchAPI D8-Berichte zur Unterstützung der Suche mit mehreren Indizes)

Apachesolr ermöglicht das Bearbeiten von Feldern auf Inhaltsbasis, was möglicherweise einfacher ist, jedoch nicht die Möglichkeit bietet, einem Dokument verwandten Inhalt hinzuzufügen. Sie müssen tatsächlich benutzerdefinierten Code schreiben, um Informationen aus Feldsammlungen, Referenzen und anderen Inhalten aufzunehmen Felder. Apachesolr D7 unterstützt Ajax nicht, es sei denn, Sie verwenden Ansichten, aber bei Verwendung von Ansichten verlieren Sie Facetten. Das heißt ... das Ändern der im Index gespeicherten Informationen ist ziemlich einfach, wenn Sie gerne in Hooks codieren.

Die Idee, nach Entitäts-IDs zu suchen und diese dann einzeln zu rendern (kann von beiden Modulen verwendet werden), scheint ein Leistungsalptraum zu sein. Wenn Sie jedoch Ihre Entitätsanzeigen zwischenspeichern, ist dies möglicherweise effizienter als das Rendern aus der SolR-Antwort.

2
dmcg