Suche in MyCoRe mit Apache Solr
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