2015.05 2016.06 2017.06

Suche in MyCoRe mit Apache Solr

Die MyCoRe-Anwendungen benötigen eine leistungsstarke Suchmaschine für vielfältige Suchoperationen. Daher hat sich das MyCoRe-Team für die Einbindung von Apache Solr entschieden. Wie man einen Solr-Server aufsetzt und betreibt wird in dieser Anleitung beschrieben.

Einrichtung eines Solr-Servers

Bevor man mit der Einrichtung des Solr-Servers beginnt, sollte man sich kurz auf der Webseite http://lucene.apache.org/solr mit dem System vertraut machen.

Um die Konfiguration zu vereinfachen, stellt die MyCoRe-Community ein vorkonfiguriertes Paket zum Download bereit.

Solr-Server

Der Solr-Server (bis Version 4) wird in Form eines solr-{version}.war Archives ausgeliefert. Da MyCoRe noch einige zusätzliche Bibliotheken benötigt, wird ein speziell konfiguriertes solr.war über MyCoRe bereitgestellt, das direkt aus dem MyCoRe-Artifactory bezogen werden kann. Die aktuelle Version ist die Solr-Version 4.10 (speichern als solr.war).

Das solr.war wird in das /webapps Verzeichnis des Servlet-Containers (Tomcat) kopiert und von dort automatisch installiert.

Solr-Home-Verzeichnis

Im Solr-Home-Verzeichnis werden die Konfiguration der Suchfelder und später der Such-Index abgelegt. Zum Einstieg wird ebenfalls eine vorkonfigurierte Variante über das MyCoRe-Artifactory bereitgestellt. Hier der direkte Link, der zur Solr-Version 4.10 passt: Solr-Home 4.10 (speichern als solr-home.zip). Alternativ kann alles direkt bei Apache Solr bezogen werden.

Das Solr-Home-Verzeichnis kann im MyCoRe-Datenverzeichnis abgelegt werden. Da ein Solr-Server in der Regel für mehrere MyCoRe-Instanzen verwendet wird, empfiehlt sich jedoch ein zentraler Ort. Die ZIP-Datei wird an die bevorzugte Stelle entpackt.

Nun muss Solr noch bekannt gegeben werden, wo das Home-Verzeichnis zu finden ist. Diese Konfiguration kann man entweder unter {tomcat_home}/conf/Catalina/{hostname|localhost}/solr.xml oder unter {tomcat_home}/webapps/solr/META-INF/context.xml vornehmen. Letztere befindet sich bereits im vorgefertigten MyCoRe-Solr-WAR. Das angegebene Datenverzeichnis muss dabei existieren.

<Context>
  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
  <Environment name="solr/home"
               type="java.lang.String"
               value="c:/Users/{userName}/AppData/Local/MyCoRe/{appName}/data/solr"
               override="true" />
</Context>

Hinweis: Diese Konfiguration beinhaltet eine Sicherheitseinstellung (Valve), wodurch der Solr-Server nur direkt von localhost bzw. 127.0.0.1 erreicht werden. Diese Einstellungen stehen in der Datei context.xml, die unter webapps/solr/META-INF zu finden ist. Sollte diese Sicherheitsmassnahme nicht gewünscht sein, so muss die Datei entsprechend angepasst werden.

Solr-Cores

Auf einem Solr-Server lassen sich mehrere Bereiche (Cores) definieren, um den selben Server für verschiedene Anwendungen und unterschiedlichen Konfigurationen betreiben zu können.
In der Standard-Konfiguration ist ein Core mit dem Namen collection1 vordefiniert. Es wird empfohlen diesen als Basis für die eigene Core-Konfiguration zu verwenden. Dazu wird im Solr-Home-Verzeichnis das collection1-Verzeichnis als {appName} dupliziert oder umbenannt und in der Datei core.properties der Name mit name={appName} gesetzt.

Wenn der Core collection1 deaktiviert werden soll, muss einfach die Datei core.properties aus dessen Konfigurationsverzeichnis gelöscht werden.

Weitere Möglichkeiten der Konfiguration und mehr Informationen zur Solr-Installation finden sich in der Solr-Dokumentation.

Solr-Konfiguration für die eigene Anwendung

Die URL des Solr-Servers muss in der Anwendung konfiguriert werden (mycore.properties-Datei im MyCoRe-Konfigurationsverzeichnis). Das entsprechende Property muss z.B. wie folgt gesetzt werden:
MCR.Module-solr.ServerURL=http://localhost:8080/solr/{appName}

Neben den speziellen Anpassungen für die konkrete Anwendung und deren Datenmodelle sind auch einige globale Einstellungen für jeden Core empfehlenswert.

So lässt sich beispielsweise der Update-Prozess beschleunigen, wenn man den UpdateHandler in der Core-Konfiguration (conf/solrconfig.xml) wie folgt konfiguriert:

<autoCommit>
  <maxTime>1000</maxTime>
  <openSearcher>false</openSearcher>
</autoCommit>

<maxPendingDeletes>0</maxPendingDeletes>

<autoSoftCommit>
  <maxTime>1000</maxTime>
</autoSoftCommit>

Achtung: In der Datei solrconfig.xml muss für den Request Handler /select der Parameter fq um die in der eigenen Anwendung verwendeten MyCoRe-Objekttypen ergänzt werden, z.B.:

<str name="fq">objectType:("disshab" OR "thesis" OR "document")</str>

 Kathleen Neumann, Jens Kupferschmidt, Robert Stephan - 2015-10-21