2009-05-01 8 views
1

Ich richte eine Solr-Suchmaschine ein, die mehrere Sprachen indizieren wird. Ich habe eine benutzerdefinierte UpdateProcessorFactory erstellt, um herauszufinden, welche Abschnitte des Eingabetextes welche Sprache sind. Anschließend kopiere ich diese Abschnitte des Dokuments in sprachspezifische Felder. Zum Beispiel mit diesem Text:Mehrsprachiger Solr-Suchindex

"Hallo Welt, Bonjour le Monde, Hallo Welt."

Es kopiert "Hello World" in das En-Textfeld, "Bonjour le Monde" in das Fr-Textfeld und "Hallo Welt" in das De-Textfeld. Jedes Feld verfügt über die entsprechenden Sprachanalysatoren, um die Wörter zu tokenisieren und zu verankern.

Am Ende möchte ich eine Box für einen Benutzer haben, um Suchbegriffe eingeben, die in allen Sprachen suchen würde. Die Suchbegriffe müssen nicht übersetzt werden, aber sie sollten angemessen behandelt werden. Was ist der beste Weg, dies zu erreichen? Ich bin auch sehr besorgt über die Leistung der Suchanfragen.

Antwort

8

Der beste Weg ist die Verwendung der DisMaxRequestHandler. Es wird jedes Feld für die entsprechende Sprache (wie in schema.xml definiert) entsprechend analysiert.

Also, wenn Ihre Abfrage wie /solr sieht/wählen? Qt = dismax & QF = en-Text% 20FR-Text% 20de-Text & q = Hallo% Welt Solr wird das Richtige tun.

(vorausgesetzt, dass Sie sich als solr.DisMaxRequestHandler in einem Requestblock in solrconfig.xml konfiguriert dismax)

meisten Analyse ist schnell. Ihre Leistungsgrenzen beziehen sich hauptsächlich auf Ihre Indexgröße, Gesamtanzahl der Begriffe usw. Achten Sie darauf, alles gemäß dem Solr Performance Guide in ihrem Wiki abzustimmen. Ich führe gerade einen 60GB Index und fahre fort, Suchen im Unterbereich 100ms auf der Hardware zu erhalten, die nicht ganz extravagant ist.

Verwandte Themen