Solr 3.1 Multicore Setup

Seit März 2011 ist die Version 3.1 des Suchmaschinenservers Solr verfügbar. Die perfekte Möglichkeit um auf ein zukuntssicheres Multicoresetup umzusteigen. Der Umstieg von 1.4.1 auf 3.1 bereitet leider einige Probleme die in diesem Tutorial besprochen werden.

Setup multicore

Ein Multicore Setup bietet viele Vorteile gegenüber einer Instanz die nur einen Index hat. Beispielsweise können jederzeit Solr Cores angelegt werden, wobei jeder wie eine eigene Solr Instanz zu betrachten ist.

Jeder Core hat seine eigenen config Dateien, einen eigenen Index und kann einzeln gestoppt oder gestartet werden.

Das generelle Stoppen und Starten von Solr erfolgt über Putty indem Sie auf den Tomcat Server zugreifen.

Selbstverständlich hat jeder Core auch ein eigenes File um Daten, beispielsweise per Mysql, zu Importieren. Es besteht auch die Möglichkeit Cores zusammenzuführen oder auszutauschen(switch). Funktioniert ein Core in Produktion nicht mehr, dann kann ein switch auf einen anderen Core erfolgen.

Besonders für mehrsprachige Projekte ist es die einfachste Möglichkeit um „multiple Indexes“ zu erstellen.

Eine gute Einführung gibt es auf der Apache Seite.

Wir beginnen mit dem Anlegen der Ordner und Dateien.

Projektstruktur

  • + SOLR Home
      + multicore
        + core_de
          - schema.xml
          - solrconfig.xml
        + core_en
          - schema.xml
          - solrconfig.xml
        - solr.xml

In der Datei solr.xml wird nun definiert welche Cores es gibt und welche Eigenschaften diese haben. Die Verwendung von Eigenschaften (Properties) ist sehr hilfreich da diese in allen Konfigurationsdateien verwendet werden können.

Solr.xml

  • <?xml version="1.0" encoding="UTF-8" ?>
    <solr persistent="true">
      <!--
      adminPath: RequestHandler path to manage cores.
      If 'null' (or absent), cores will not be manageable
      via request handler
      -->
      <cores adminPath="/admin/cores">
        <core name="core_de" instanceDir="core_de">
           <property name="ram" value="256" />
        </core>
        <core name="core_en" instanceDir="core_en">
           <property name="ram" value="128" />
        </core>
       </cores>
    </solr>

Und so kann in der solrconfig.xml dann auf diese Properties zugegriffen werden

<<strong>ramBufferSizeMB</strong>>${ram}</ramBufferSizeMB>

Es empfieht sich das Selbe auf den Namen der schema.xml anzuwenden um diese später besser unterscheiden zu können.

Mit der Version 3.1 des Solr Suchmaschinenservers ist es nicht möglich eine gemeinsame Config und Solr.xml Datei zu verwenden. Dieses Feature wird es voraussichtlich in Solr 4.0 geben.

Data Import Handler (DIH)

Wenn Sie Solr aus der Datenbank mit Daten füttern möchten, emfehle ich den Apache DIH der Solr und die Datenbank mit einander verbindet. Über diesen Importer werden Daten aus der Datenbank in Solr importiert.

Das Setup auf einem beliebigen Java Server, wir verwenden Tomcat 6.x, funktioniert gleich wie bei vorherigen Versionen.

Wenn allerdings der Datenimport (zb. über MySql) mit dem Data Import Request Handler erfolgt so bekommen wir gleich schon mal den ersten fatal Error um die Ohren.

Wenn wir den DIH so in unserer solrconfig.xml eintragen

  <requestHandler name="/dataimport">
    <lst name="defaults">
      <str name="config">/home/username/data-config.xml</str>
    </lst>
  </requestHandler></pre>

dann wird diese Klasse im Solr.Home Verzeichnis gesucht aber nicht gefunden. Das liegt daran, dass diese Klasse im WAR File von Solr 3.1 nicht mehr enthalten ist. In Version 1.4 war diese Standardmäßig enthalten. Das kann ganz einfach mit dem Befehl

jar -xvf solr-3.1.war

überprüft werden.

Die Lösung des Problems ist einfach diese Klasse nachzuladen. Ich habe das so gelöst, indem ich die Klasse Apache Solr DataImportHandler heruntergeladen und in das Solr.Home Verzeichnis kopiert habe. Das ist etwas schwierig zu finden ist aber das Verzeichnis wo die ganzen .jar files drinnen sind und das ist bei mir  WEB-INF. Den Tomcat neu starten und Ergebnis prüfen.

Tomcat neu Starten über Putty

Der Tomcat-Server wird in Putty mit den Befehlen

  • „/etc/init.d/tomcat stop“ gestoppt und mit
  • „/etc/init.d/tomcat start“ wieder gestartet.

Der Versuch das .jar file in das Solr.war File zu bekommen ist uns leider nicht gelungen, währe aber warscheinlich die schönste und einfachste Lösung.

Solr Config und Solr Search

Hilfe zur Konfiguration von Solr und näher Informationen zu Solr Search gibt es hier.

Solr Update mit Solr PHP Client

Ein Tutorial zum Updaten von Einträgen im Solr Index per PHP.

Sei sozial und teile

Über den Autor Andreas Grundner

Ich bin Wordpress, Joomla, Typo3 Integrator, Unix Rootserver Administrator und Webanwendungsprogrammierer. Mittlerweile habe ich über 70 Webprojekte weitgehend selbstständig mit enger Kundenabsprache realisiert. Ich bin auf One Page Websites auf Wordpress-Basis spezialisiert, biete aber auch Suchmaschinenoptimierung (SEO), Blogs, Facebook, Youtube und Google+ Seiten an. Meine Verpflichtung gilt dem Datenschutz, meine Leidenschaft dem Finden und Aufzeigen von Sicherheitslücken in Webanwendungen.

Meinung sagen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.