Apache Solr
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