Solr im Detail

Schnittstellen zu Solr

Nennenswerte Solr Clients existieren für PHP (Drupal), JSON (Javascript / Ajax) und .NET (solrNet)

Die Grund -API von Solr ist eine GET / POST Schnittstelle. 

Performance und Skalierbarkeit

Verteilte Server

http://wiki.apache.org/solr/CollectionDistribution

Solr unterstützt eine Master / Slave Anordnung. Der Masterserver erhält die Update / Deleteanfragen und die Slaves erhalten die Suchanfragen. Diese Liefern das Suchergebnis aus. Dabei wird der Index vom Master Server auf die Slave Server gespiegelt. Dies wird als CollectionDistribution bezeichnet. Der Name hat folgende Bedeutung:

 
  • Collection = Der Suchindex von Lucene besteht aus einer Sammlung von Dateien (Index-Dateien)
  • Distribution = Diese Index wird auf zusätzliche Server gespiegelt

Der Index von Lucene ist so clever aufgebaut, dass zusätzliche Dateien im Index in neue Dateien aufgenommen werden. Beim Spiegeln mir rsync werden nur die neuen Dateien kopiert. Falls ein Dokument aus dem Index gelöscht wird, erhält es ein „deleted“ flag und wird erst dann aus der Indexdatei gelöscht wenn der die Collction optimiert wird. Sinnvollerweise geschieht dies zu einem Zeitpunkt wo der Index nicht stark ausgelastet ist.

Verteilte Suche / Geteilte Indexe

http://wiki.apache.org/solr/DistributedSearch

In der neusten Version unterstützt Solr auch geteilte Indexe. Solr unterstützt nur horizontale Trennungen eines Indexes, d.h. wenn ein Index extrem viele Zeilen enthält kann ein Teil der Zeilen auf einen zweiten Server ausgelagert werden. Dies wird jedoch erst in der neusten Version unterstützt und hat einige grosse Nachteile. Beispielsweise wird keine Facettensuche unterstützt.