Idealer Weise gibt es seit einigen Versionen von Solr beim offiziellen Download eine All-in-one Variante.
Darin werden geliefert: sämtliche Bibliothken, die man für besondere Solr Funktionen (Clustering, Dataimport Handler, Velocity, ...) benötigt, die Solr Anwendung selber und Jetty. Jetty ist ein kleiner Java Anwendungsserver, in dessen man die Solr Anwendung deployen, also installieren & laufen lassen kann.
Das funktioniert in aller Regel super...
...so lange man nicht versucht, deutsche Umlaute, also äöü und ß zu verarbeiten.
Mir scheint, dass Solr im Jetty Probleme hat mit deutschen Umlauten. Einige Stunden haben wir im Web aufgebracht, um eine Lösung zu finden und sind letztlich dazu über gegangen, einen anderen Anwendungsserver zu nutzen, denn Solr / Lucene können tatsächlich mit deutsch Umlauten umgehen. Ä, Ü, Ö und ß sind für sie kein Problem. Nur in Kombination mit Jetty scheint es zu haken.
Die Beschreibung zur Tomcat (ehemals Catalina) installation findet sich im Solr Apache Wiki.
Hinsichtlich der Startparameter ist alles recht übersichtlich und normal:
ulimit -v unlimited export JAVA_HOME=/usr/lib64/jvm/java-1_6_0-ibm-1.6.0/jre/ export JAVA_OPTS="-Xms2048m -Xmx4096m" export TOMCAT_USER=root export CATALINA_HOME=/opt/tomcat6 export CATALINA_PID=$CATALINA_HOME/bin/tomcat6.pid
Das ulimit ist wichtig, wenn man größere Datenmengen verarbeitet. Der Rest: Speicherparameter und Pfade wählt jeder solber und der tomcat user sollte zumindest in einer produktiven Umgebung auch nicht root sein, wie hier im Beispiel.
Im nächsten Schritt müssen wir den Tomcat mit Solr vertraut machen. Dazu gibt es eine Konfigurationsdatei, die wir anlegen:
/opt/tomcat6/conf/Catalina/localhost/solr.xml
Auch hier ist der Inhalt übersichtlich, wichtig ist der Hinweis auf UTF-8, damit es mit den deutschen Umlauten auch sicher klappt.
<?xml version="1.0" encoding="utf-8"?> <Context docBase="/opt/solr/apache-solr.war" debug="0" crossContext="true"> <Environment name="solr/home" type="java.lang.String" value="/opt/solr/" override="true"/> </Context>
Hilfreich ist darüber hinaus ein Blick in die server.xml des tomcat: /opt/tomcat6/conf/server.xml, ob der Connector mit URIEncoding="UTF-8" läuft:
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" URIEncoding="UTF-8" redirectPort="8443" />
Der Rest gehört zur klassischen Solr Konfiguration und Solr Installation.
Der Vollständigkeit halber noch der Hinweis, dass unser gesamtes Linuxsystem an jeder möglichen Konfigurationsstelle auf UTF-8 steht.
In der Summe funktionieren deutsche Umlaute nun reibungslos.
Hallo thx,
AntwortenLöschenich habe es genau umgekehrt erlebt - nämlich, dass mit Jetty die Umlaute komplett funktioniert haben, aber bei Tomcat(7) erst einige Einstellungen von Nöten waren, um es überhaupt zum Laufen zu bekommen.
Ich muss dazu sagen, dass wir
1) mit Ruby
2) per POST mit solr
kommunizieren.
Dank 2) bringt das von Dir genannte Setting im Connector überhaupt nichts. Ich musste den folgenden Filter im $SOLR_HOME/WEB-INF/web.xml anlegen:
SetCharacterEncoding
org.apache.catalina.filters.SetCharacterEncodingFilter
encoding
UTF-8
ignore
true
Vielleicht hilft das ja dem ein oder anderen weiter.
Danke! Für uns hat es gereicht die server.xml zu editieren und 'URIEncoding="UTF-8"' einzufügen.
AntwortenLöschen