Apache Solr

Aus Mikiwiki
Zur Navigation springen Zur Suche springen

Apache Solr ist ein auf der Lucene Java-Suchbibliothek aufbauender Suchserver mit Programmierschnittstellen für JSON, XML, PHP, Python und Ruby, facetierter Suche, Replikation sowie einer webbrowserbasierten Administrationsoberfläche.

Der Server läuft in einem Java Servlet-Container (z. B. Apache Tomcat).

Konfiguration

Datei "solr.xml"

Masterdatei für mehrere Cores. Ein Index wird oft als "Solr core" bezeichnet", standardmässig wird nur ein Core verwendet (sodass die Datei "solr.xml" in diesem Fall nicht benutzt wird).

Datei "solrconfig.xml"

Enthält:

  • die Indexierungsparameter von Lucene
  • die Cache-Einstellungen
  • die Konfiguration der Request Handler
  • die von den Request Handlern verwendeten Suchkomponenten
  • Response Writer
  • Replikationseinstellungen
  • weitere Funktionalitäten

Beispiel: Konfiguration des Request Handlers "dismax".

<requestHandler name="dismax" class="solr.SearchHandler" >
  <lst name="invariants">
    <str name="fl">id,filename,title,content_type</str>
  </lst>
  <lst name="defaults">
    ...
    <str name="qf">text^0.5 title^5.5 filename^0.1 category^1.5</str>
    <str name="pf">text^0.5 title^2.5 category^1.5</str>
  ...


Der Handler enthält zwei wichtige Abschnitte, "invariants" and "defaults":

  • Ein "default"-Wert wird verwendet, wenn keiner der angegebenen Parameter über die Suchabfrage übergeben wurde. Falls ein Wert über die Suchabfrage übergeben wurde, wird er den "deafult"-Wert überschreiben. Solche Werte werden beispielsweise für die Suchfelder ("qf", query fields) oder für die Phrasenfelder ("pf", phrase fields) verwendet.
  • Ein "invariant"-Wert kann niemals überschrieben werden.

Dank der so verwendeten Standardwerte reicht es, bei einer Suchabfrage den Suchbegriff ("q") sowie den Suchtyp ("qt") anzugeben:

http://localhost:8080/solr/select/?q=cal+ripken&qt=dismax

Datei "schema.xml"

Besondere Dateien

Verwendung

Indizieren aller Inhalte.

$ cd $SOLR_HOME/lucidlabs
$ ant index-directory
Buildfile: build.xml
compile:
jar:
index-directory:
    [java] Starting index() method. Start dir: /home/mik/tmp/LUCID/lucidlabs/content
    [java]    pelican.html
    [java]    TheGrizzlyBear.pdf
    ...
    [java]    integrating-with-mule-esb-dallas-javamug-april-2009.pdf
    [java] TOTAL COUNT OF DOCUMENTS INDEXED: 361
    [java] INDEXING COMPLETE IN 61 seconds
BUILD SUCCESSFUL
Total time: 1 minute 4 seconds

Anlegen eines Index mit den Inhalten des Verzeichnisses "content/isolatinexample".

$ ant index-directory -Ddir=content/isolatinexample
Buildfile: build.xml
compile:
jar:
index-directory:
     [java] Starting index() method. Start dir: /home/mik/tmp/LUCID/lucidlabs/content/isolatinexample
     [java]    example1.pdf
     [java] TOTAL COUNT OF DOCUMENTS INDEXED: 1
     [java] INDEXING COMPLETE IN 1 seconds
BUILD SUCCESSFUL
Total time: 2 seconds

Ein vorhandener Index kann über die Statistikseite<code> http://localhost:8080/solr/admin/stats.jsp </code>genauer untersucht werden.

Löschen aller Inhalte des Index.

$ ant index-init
Buildfile: build.xml
compile:
jar:
index-init:
     [java] Initializing Solr index at:http://localhost:8080/solr ... 
     [java] Index document count is now: 0
     [java] 
BUILD SUCCESSFUL
Total time: 5 seconds