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?
Antworten:
Ab 2015 können wir die Such-API- und Apache Solr-Suchmodule mit den folgenden Zahlen vergleichen:
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.
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:
Stark basierend auf Entity API
Erweiterungsfunktionen:
Grundstruktur:
Indexfunktionen:
Basierend auf der Entity-API:
So konfigurieren Sie Ihre Indexfelder:
Such-API-Ansichten:
Standardmäßig: Daten, die über Entity Load abgerufen werden
Such-API-Rezepte:
Haken zum Hinzufügen
Haken beim Indizieren von Elementen ausgelöst
Apachesolr
Erweiterungsfunktionen:
Apachesolr Rezepte:
Quelle: Search API vs Apachesolr Diashow
Siehe auch:
quelle
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.
quelle
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.
quelle