Einstieg in Volltext und Dokumentensuche mit Drupal 7 und Hosted Solr

Die benötigten Drupal-Module:

Um Solr mit Drupal 7 zum Laufen zu bekommen, benötigst Du eine Reihe Module für deine Drupal-Installation. Es läuft zwar alles auf die Module Search API Solr und Search API Attachments, diese haben jedoch ein paar Abhängigkeiten. Hier ist die komplette Liste mit den getesteten Versionen:

Die angegebenen Versionen sind die zur Zeit des Tests aktuellsten.
Die Module kannst Du entweder via GUI oder manuell installieren. Eine Installationsanleitung findest du auf der Drupal-Website.

So in etwa sollte die Liste Deiner installierten Module am Ende aussehen (plus natürlich, was Du sonst noch so an Modulen selbst verwendest):
Liste der relevanten Module

Solr-Kern auf Hosted Solr anlegen

Damit die einzelnen Inhaltselemente der Drupal-7-Seite und an diese angehängten Attachments indiziert und durchsucht werden können, musst Du zuerst einen Solr-Kern anlegen, mit dem Drupal sich dann verbinden kann.
Dazu loggst Du Dich in das Hosted Solr-Backend ein und legst einen neuen Solr-Kern mit einem beliebigen Namen und folgenden Einstellungen an:

Einstellungen für den neuen Solr Kern für Drupal 7

Der Kern wird nun als letzter in der Liste angezeigt (falls bereits anderen Kerne existieren) und muss erst noch booten. Nach kurzer Zeit kann er verwendet werden.
Übersicht des bootenden Solr Kerns Dort kannst Du nun nach Klick auf den Button Daten Host, Port und Pfad sowie Benutzer und Passwort auslesen. Diese brauchst Du im nächsten Schritt.
Über den Button Admin gelangst Du zur Administrationsseite mit Logs etc. Darauf werde ich hier aber nicht eingehen. Daten des neuen Solr-Kerns

Serverkonfiguration in Drupal einrichten

Nachdem Du alle Module, wie im Screenshot oben gezeigt, installiert und aktiviert hast, kannst Du Drupal nun für Solr konfigurieren. Dazu loggst Du Dich in Drupal mit Deinem Administratoraccount ein und wählst in der Menüleiste am oberen Bildschirmrand den Punkt Configuration aus. Dort findest du im Bereich Search and Metadata den Punkt Search API.
Search API Konfiguration im Bereich Search and Metadata

Da Du zuerst die Konfiguration für den Server anlegen musst, wählst du im nächsten Menü den Punkt add Server aus.
add Server Menüpunkt in Search API Konfiguration

Du wählst zuerst in der Dropdown-Liste bei Service class die Option Solr service aus. Dann öffnen sich weitere Optionen. Jetzt brauchst Du die Daten Deines Hosted-Solr-Kerns.
Wie Du den Server nennst, spielt hier keine Rolle. Falls Du mehrere Sprachen verwendest, ist es sinnvoll, für jede Sprache einen Kern anzulegen und diese hier entsprechend zu benennen.
Achte darauf, das HTTP-Protokoll auf https zu stellen!
Die restlichen Daten kannst Du aus dem Hosted-Solr-Backend kopieren.
Die Sektion Advanced kannst Du erst einmal überspringen und Dir später anschauen, falls Du mehr Einstellungen ausprobieren möchtest.
Konfiguration des Servers Wenn Du alles richtig eingerichtet hast, sollte in etwa diese Seite angezeigt werden:
Solr Server erfolgreicht erstellt Damit ist der Server angelegt und Du kannst mit den Indizes anfangen.

Search API Attachments konfigurieren

Damit später Dateien indiziert werden können, musst Du noch das Modul Search API Attachments konfigurieren. Denn damit Solr Dateien indizieren kann, müssen vorher die Inhalte der Dateien extrahiert werden. Das macht Solr zwar auch für Dich, aber das musst Du dennoch vorher konfigurieren.
Gehe dazu erneut in das Menü für Search API und wechsle dort in den Tab Search API Attachments.
Dort wählst Du als Extraction Method die Option Solr (remote Server) aus und trägst weiter unten in das Textfeld Solr extracting servlet path den Pfad "extract/tika" ein.
Wenn Du fertig bist, sieht das in etwa so aus:
fertige Search API Attachment Konfiguration

Indizes anlegen

Wir werden nun zwei Indizes anlegen: Einen für die Volltextsuche in den Artikeln der Drupal-Seite und einen für die Suche in angehängten Dateien. Falls Dich nur eines der beiden interessiert, kannst du den jeweils anderen Abschnitt überspringen. Die beiden sind in keiner Form voneinander abhängig.

Der Volltext-Index

Nach dem Anlegen des Servers, gelangst du zurück zur Konfigurationsseite Search API. Dort wählst du nun die Option add Index.
Index anlegen in Search API Konfiguration Den Index kannst Du wieder nennen wie Du möchtest. Er sollte aber von dem folgenden Index für Dateiensuche unterscheidbar sein. Beim Index musst Du nur darauf achten, als Item Type Node auszuwählen und im Dropdown Menü für Server den Server auszuwählen, den Du zuvor angelegt hast.
Im Abschnitt Bundles kannst Du limitieren, welche Content-Types indiziert werden sollen. Falls Du hier nichts auswählst, werden alle Types indiziert. Ich lasse es vorerst unlimitiert.
Konfiguration des Index für Volltextsuche Nach einem Klick auf Create index kannst Du auf der nächsten Seite auswählen, welche Felder der Content-Elemente indiziert werden sollen. Hier kannst Du dich austoben und Dir aussuchen, was deine Nutzer/innen interessieren könnte. Das wichtigste Feld wird jedoch nicht per default angezeigt: Der Inhalt der Seiten.
Um diesen hinzuzufügen, wähle im unteren Bereich bei add related fields die Option The main body text aus und klicke auf Add fields. Dann kannst Du im oberen Bereich einen Haken bei The main body text >> Text machen.
Das Ergebnis sollte in etwa so aussehen:
Auswahl der indizierten Felder Auf der nächsten Seite kannst Du optional noch Data Alterations und Processors aktivieren, damit wollen wir uns aber jetzt nicht befassen. Ein weiterer Klick auf Save configuration und der Index für die Volltextsuche ist fertig.
Wie Du diesen benutzt, um Deine Besucher/innen eine Suchmaske zur Verfügung zu stellen, zeige ich Dir später im Abschnitt Searchview einrichten. Vorher legen wir aber noch den Index für die Dateien-Suche an.

Der Dateiindex

Das funktioniert im ersten Schritt fast wie der Volltextindex. Es muss nur im ersten Menü als Item type File ausgewählt werden.
Item Type für den Dateiindex Bei der Auswahl der Felder kann noch nichts eingestellt werden, dafür ist ein weiterer Schritt notwendig. Wechsle dazu in den Tab Filters oben rechts.
Dort setze einen Haken bei der Data Alterations Option File Attachments. Hier klappen wieder weitere Optionen auf, die aber vorerst ignoriert werden können.
Klicke also auf Save Configuration und wechsle zurück in den Fields Tab.
Hier ist jetzt die neue Option File Content auswählbar. Setze dort einen Haken (falls noch keiner gesetzt ist) und speichere erneut. Das Ergebnis sollte so aussehen:
Dateiindex fertig eingerichtet

Nachdem Du Deine Indizes angelegt hast, musst du noch Deine Inhalte indizieren. Dazu wählst Du in der Server- und Indexübersicht den jeweiligen Index aus und klickst auf Index now. Da ich alle Schritte dieser Anleitung auf einer Testumgebung durchführe, habe ich nur sechs Inhaltselemente, die indiziert werden können. Bei einer größeren Seite kann der Indizierungsprozess aber durchaus einen Moment dauern.
Indizierung der Inhalte

Searchview einrichten

Nun da die beiden Indexe angelegt und fertig eingerichtet sind, kannst Du Views für diese anlegen. Diese Views werden Nutzer/innen als einzelne Seiten präsentiert und enthalten eine Suchmaske und die Ergebnisse der Suche.

… für die Volltextsuche

Wir fangen wieder mit dem View für die Volltextsuche an.
Wähle zuerst in der Menüleiste am oberen Bildschirmrand die Option Structure und in dem sich öffnenden Menü die Option Views aus. Lege durch einen Klick auf Add new view einen neuen View an.
Den View kannst du ebenfalls benennen wie Du möchtest. Wähle nun in der Dropdown-Liste Show den Index für die Volltextsuche aus, den Du angelegt hast.
Display format muss auf Unformatted list bleiben.
Du kannst noch einen Pagetitle und einen Pfad angeben, falls Du das möchtest. Ich lasse alles so, wie es ist und gehe mit Continue & edit weiter.
View anlegen für Volltextsuche - Schritt 1 Auf der nächsten Seite stehen nun einige Einstellungen zur Verfügung. Ich werde die wichtigsten kurz durchgehen.

Fields

Hier kannst Du einstellen, welche Informationen zu den Suchergebnissen den Nutzer/innen angezeigt werden und wie diese formatiert sind. Über den Button add rechts davon kann eine Reihe verschiedenen Informationsblöcke hinzugefügt werden. Ich wähle Hier Indexed Node: Title und The main body text: Text aus und lasse im zweiten Konfigurationsschritt je alles, wie es ist.

Filter Criteria

Hier kannst Du auswählen, welche Felder der Datensätze durchsuchbar sein sollen. Wähle hier The main body text: Text (indexed) aus, da dies das von Solr indizierte Feld ist. Falls du beim Anlegen des Index mehr Felder zum Indizieren ausgewählt hast, werden Dir diese auch hier mit dem Zusatz (indexed) angezeigt. Diese kannst Du ebenfalls auswählen, um sie durchsuchbar zu machen.
Nach einem Klick auf Apply (all displays) können alle zuvor ausgewählten Suchfelder konfiguriert werden. Setze hier für jedes Suchfeld den Haken bei Expose this filter to visitors, to allow them to change it, damit Deine Nutzer/innen überhaupt Suchbegriffe eingeben dürfen.

Sort Criteria

Hier kannst du einstellen, wie die Ergebnisse sortiert werden sollen.

Page Settings

Hier kannst du einstellen, unter welchem Pfad die Suche erreichbar sein soll (das haben wir beim anlegen des Views schon eingestellt), ob die Suche in Menüs auftauchen soll und wer alles Zugriff auf die Suche hat. Wähle bei Access die Optionen Permission und View published content aus, damit die Suchergebnisse nur veröffentlichte Inhalte enthalten.
Ich stelle es so ein, dass die Suche im Hauptmenü angezeigt wird.

Die restlichen Einstellungen betreffen das Layout der Suche.
Unter Advanced kann noch eingestellt werden, wie sich die Suche verhält, falls keine Ergebnisse gefunden wurden etc.

Wenn Du alles eingestellt hast, sollte die Seite in etwa so aussehen:
Fertig eingestellter View für die Volltextsuche

Da alle Einstellungen, die Du hier vornimmst, nur temporär sind, klicke oben rechts auf Save. Nun kannst Du Dir Dein Suchformular ansehen und es ausprobieren.
Wenn Du alles richtig gemacht hast, kannst du Deine Seite jetzt durchsuchen!

… für die Dateien-Suche

Zu guter Letzt kommen wir zur Einrichtung des Views für die Dateiensuche. Der View für die Dateiensuche ist dem View für die Volltextsuche sehr ähnlich und unterscheidet sich von diesem nur in der Einrichtung der Suchfelder (Filter Criteria) und Anzeigefelder (Fields).

Lege also zuerst einen neuen View an und wähle diesmal bei Show den Index für die Dateiensuche an, den Du zuvor angelegt hast.
Dann konfiguriere die Anzeigefelder, wie Du sie gerne hättest. Ich wähle hier nur Indexed File: File name aus. Im folgenden Konfigurationsfenster für das Feld setze ich noch einen Haken bei Link this field to its entity, so dass Nutzer/innen auf das Ergebnis klicken können, um die Datei direkt herunterzuladen.
Wähle bei den Filtern die Option Indexed File: File content aus, setze wieder einen Haken bei Expose this field to visitors…, und nachdem Du die Pagesettings gesetzt hast, wie Du möchtest, bist Du fertig!
Bei mir sieht die fertige Konfiguration des Views so aus:
Konfiguration des Views für Dateiensuche

Damit sind wir am Ende der Anleitung angekommen und deine Drupal-7-Seite ist jetzt hoffentlich voll durchsuchbar.
Viel Erfolg bei der weiteren Entwicklung!