Search API vs. Apache Solr Search


34

Ich habe das Apache Solr-Suchmodul in Drupal 6 verwendet und suche in der Such-API nach einer Drupal 7-Installation. Ich habe hier einige Diskussionen gesehen, suche aber nach Gründen für die Wahl des einen oder anderen.

Gibt es einen Grund, sich für einen anderen zu entscheiden? Wenn ja, warum oder warum nicht? Ich habe gehört, dass es bei der Such-API möglicherweise Komplexitäts- und / oder Leistungsprobleme gibt. Ist das wahr?


Ich würde solr nicht für die mehrsprachige Suche vorschlagen. Hängt davon ab, wie wichtig die Suche für die mehrsprachige Suche ist. Das Setup kann schmerzhaft sein. Für die mehrsprachige Suche muss Ihre Sprache von solr unterstützt werden. Es gibt grammatikalische Regeln, die für Ihre Sprache festgelegt werden müssen. Außerdem müssen Java und Solr installiert sein, damit Sie kein billiges Shared Hosting verwenden können. Wenn Sie eine Suchmaschine entwickeln, möchten Sie diese möglicherweise verwenden. Wenn Sie die Entwicklungsressourcen berechnen, ist Payd google site search möglicherweise eine bessere Option! Ich bin auch ein Co-Maintainer für gss modulep
ram4nd

Warum das? Irgendwelche Benchmarks?
Giorgio79

Ou Es tut mir leid, ich erwähne, dass das Setup schmerzhaft sein kann. Für die mehrsprachige Suche muss Ihre Sprache von solr unterstützt werden. Es gibt grammatikalische Regeln, die für Ihre Sprache festgelegt werden müssen. Auch als ich es mir ansah, befanden sich die Module im Entwicklungsstatus und benötigten mehr Arbeit, um die Dinge zum Laufen zu bringen. Aber es ist die schnellste Suchmaschine. Sie müssen sich also fragen, wie wichtig die Suchfunktion für Sie ist. Außerdem müssen Java und Solr installiert sein, damit Sie kein billiges Shared Hosting verwenden können.
Ram4nd

Eines der Dinge, die ich im Vergleich zur Such-API für Apache Solr tun musste, war die Suche mit mehreren Auswahlfiltern. Mit der Such-API schien es unmöglich. Solr schien diese Option zu haben.
user219492

Ich würde Multi-Site-Unterstützung erwähnen: SearchAPI bietet keine Multi-Site-Unterstützung (Verwendung desselben SOLR-Index zum Speichern von Inhalten mehrerer Sites). Apachesolr erlaubt statt: 1. Index mehr sistes contentents im gleichen SOLR Index 2. Suche nach folgenden Kriterien einer bestimmten Stelle 3. eine Suche nur auf der lokalen Seite auszuführen Ausfiltern Ergebnisse von anderen Seiten
thePanz

Antworten:


19

Ab 2015 können wir die Such-API- und Apache Solr-Suchmodule 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 drei Jahre später entwickelt, und es gelang ihr, von ihrem Konkurrenten zu profitieren.

Darüber hinaus bietet die Such-API eine ganz andere und flexiblere Architektur und wird aktiver gepflegt. Was noch wichtiger ist, es hat bereits Unterstützung für das neueste 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 der unterschiedlichen Architektur dieser Module zweimal von der Community 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 die Facetten-API (auch als Filter bekannt),
  • ein allgemeines Schema und solrconfig.xml Konfigurationsdateien,
  • Beide Betreuer haben zusammengearbeitet und die Verbindungsklassen aus dem Apache Solr Search-Modul in die Such-API migriert.

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

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 Suchen
  • Abstracts aus Datenquellen und Backend-Implementierungen
  • Großes Ökosystem mit Erweiterungen, zB Backends
  • Facetten-API-Integration
  • Stark basierend auf Entity API

    • Stellt Metadaten bereit
    • Wird für Index- und Serverkonfigurationen verwendet

Erweiterungsfunktionen:

  • Search API Autocomplete
  • Anlagen
  • Gespeicherte Suche
  • Ort
  • Hübsche Facettenpfade
  • Schieberegler (Such-API-Bereiche)
  • und viele mehr.

Grundstruktur:

Grundstruktur des Such-API-Solr-Moduls

Indexfunktionen:

  • Unterschiedliche 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:

So konfigurieren Sie Ihre Indexfelder in Search API Solr

Such-API-Ansichten:

  • Volle Ansichtsunterstützung
  • Zeigen Sie eine Eigenschaft einer Entität an
  • Verwenden Sie ein beliebiges indiziertes Feld als Filter, Argument oder Sortierung
  • Der meiste Code basiert auf der Integration von Entity API-Ansichten
  • Standardmäßig: Daten, die über Entity Load abgerufen werden

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

Such-API-Rezepte:

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

    • Datenquellen
    • Backends
    • Datenänderungen
    • Prozessoren
  • Haken beim Indizieren von Elementen ausgelöst

  • Hook wird beim Ausführen einer Suche ausgelöst

Apachesolr

Erweiterungsfunktionen:

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

Apachesolr Rezepte:

  • Open Source Enterprise Search-Plattform
  • Apache Foundation
  • Volltextsuche, Hervorhebung, Facettensuche, Clustering, umfangreiche Dokumentenverwaltung
  • Verteilt
  • Replikation / skalierbar
  • Java
  • REST HTTP und Antworten in XML / JSON und einigen anderen
  • Nicht relational

Quelle: Search API vs Apachesolr Diashow


Siehe auch:


Super Bericht, danke! Frage 1: Warum wird empfohlen, nicht beide Module in derselben Umgebung zu verwenden? Frage 2: Sind die Leistungsunterschiede zwischen den Modulen zu diesem Zeitpunkt vernachlässigbar (ich verstehe, dass die Such-API mit solr jetzt mehrere Felder indizieren kann, sodass zum Anzeigen von z. B. Miniaturbildern mit Suchergebnissen kein Entitätsladen mehr erforderlich ist)?
Jordan Magnuson,

@JordanMagnuson 1. Sie verwenden nicht beide Module gleichzeitig, da sie nicht sehr kompatibel sind und die meisten Websites nur mit einer Solr-Suchinstanz arbeiten. Daher ist es nicht sinnvoll, beide zu verwenden, es sei denn, Sie Ich habe nichts dagegen, die Arbeit zu duplizieren. Wenn Sie beispielsweise eine Suchansicht erstellen müssen, bieten beide Module eine separate Integration mit dem Ansichtsmodul, sodass Sie zwei Ansichten erstellen müssen.
Kenorb

@JordanMagnuson 2. Ich bin mir über die Leistung nicht sicher, ich hatte noch nie eine bestimmte und wahrscheinlich ändert sich jede Version (ich habe Apachesolr vor ziemlich langer Zeit verwendet). Wenn Sie Ansichten und Facetten verwenden, verwenden Sie normalerweise den Ansichts-Cache-Mechanismus, sodass Sie sich nicht um die Verarbeitungszeit kümmern und natürlich zwischengespeichert, APC / XCache usw. Die Leistung hängt wirklich von der Site-Struktur und der Interaktion der einzelnen Module ab andere.
Kenorb

Es ist komisch, dass die Such-API häufiger verwendet wird. Acquia selbst empfiehlt jedoch die Verwendung des Apache Solr-Moduls. Docs.acquia.com/acquia-search/search-api#animated
AlxVallejo

@AlxVallejo Ich denke, sie empfehlen es für die Produktion, da sie stabile und gut geschriebene Apachesolr-Konfigurationsdateien haben, um ihre Acquia Cloud (gemeinsam genutzten) Solr-Instanzen zu unterstützen (das ist der einzige Grund, den ich vermute) und vorausgesetzt, dass die Such-API aktiv im Entwicklungsstatus war. Das damit verbundene Risiko bestand darin, dass die Konfigurationsdateien häufiger aktualisiert werden mussten. Sie haben es auch unserem (großen) Projekt empfohlen, aber nach einer kurzen Zeit des Herumspielens und Überprüfens unserer Anforderungen haben wir ihre Empfehlung in Search API geändert. Sie hatten keine stabilen Konfigurationsdateien, aber wir haben unsere eigenen bereitgestellt.
Kenorb

24

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

Gegenwärtig 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 richtiger Konfiguration viele verschiedene Inhaltsdaten speichern.

Die Such-API erstellt Index-Entites und hat viele wunderbare Dinge dafür geschrieben. Die Such-API ruft jedoch nur die ID der Daten ab, nach denen Sie suchen. Das bedeutet, dass zum Laden weiterer Daten als der ID ein entity_load erforderlich ist, der auf Ihre Datenbank oder auf die von Ihnen eingerichtete Caching-Ebene zugreift. Für suchlastige Websites ist dies möglicherweise nicht die optimalste Lösung.

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


tolle Übersicht. genau das, was ich wissen wollte. Vielen Dank!
Uhr

Wenn dies Ihre Frage erfolgreich beantwortet hat, können Sie sie bitte als Antwort markieren? Vielen Dank!
LSU_JBob

1
Für diejenigen, die sich fragen, ist Multientity jetzt im Entwicklungszweig der Apache-Solr-Integration, sodass es mit der nächsten Beta herauskommen sollte.
LSU_JBob

2
Für diejenigen, die diesen Thread lesen. Ein nachteiliger Faktor für die Leistung ist, dass die Such-API jetzt das Indizieren und Abrufen von Knotendaten ermöglicht. Hier findet eine Performance-Diskussion statt .
Ross

1
Diese Antwort ist nicht mehr aktuell. Schauen Sie sich drupal.org/node/1999392 an. Search_api_solr hat jetzt Optionen für mehrere Standorte und ermöglicht auch die Rückgabe nicht nur der NID. Massives Wachstum der Installationsbasis von search_api_solr im Jahr 2014 überholte die D7-Nutzung von apachesolr.
Duncanmoo

2

Ich denke, Sie müssen wirklich beides versuchen und eine fundierte Entscheidung treffen. Bedenken Sie jedoch, dass Apachesolr noch keine Beta für Drupal 8 hat.

In der Such-API können Sie Entitäten nicht auf demselben SearchAPI-Index kombinieren. Daher befinden sich Profile, Benutzer und Knoten in verschiedenen Indizes. Es gibt ein Modul für die Suche nach mehreren Indizes, das meine Bedürfnisse nicht abdeckte, aber YMMV. Wenn sich in einem Index viele Inhaltstypen und viele Felder befinden, kann die Indexdefinition recht unübersichtlich werden. (Hinweis: SearchAPI D8-Berichte unterstützen die Suche nach mehreren Indizes.)

Apachesolr ermöglicht die Bearbeitung von Feldern auf Inhaltsbasis, was zwar einfacher ist, jedoch nicht die Möglichkeit bietet, einem Dokument verwandten Inhalt hinzuzufügen. Sie müssen jedoch benutzerdefinierten Code schreiben, um Informationen aus Feldsammlungen, Verweisen und anderen zu erhalten Felder. Apachesolr D7 unterstützt Ajax nicht, es sei denn, Sie verwenden Ansichten, aber wenn Sie Ansichten verwenden, 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 dann jede einzeln zu rendern (kann von beiden Modulen verwendet werden), scheint ein Albtraum für die Leistung zu sein. Wenn Sie jedoch die Anzeige Ihrer Entität zwischenspeichern, ist dies möglicherweise effizienter als das Rendern aus der solr-Antwort.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.