2016-07-01 6 views
0

I SOLR mit mongoDB für die Suche in einem meine Projekten verwenden. Ich muss sagen, SOLR ist sehr mächtig. Derzeit suche ich nach einer Methode, um unterschiedliche Scores für verschiedene Schlüsselwörter zu setzen, wenn die Abfrage ein Mehrfachwort ist.SOLR - Verschiedene Punktzahl zu verschiedenen Worten in einer Mehrwortsuchabfrage

z.B. Wenn ein Nutzer nach den schwarzen Puppenstuben

die weightage schwarzen sollte größer sein als Puppe und weightage der Puppe sein sollte größer als Haus sein.

schwarz> doll> Haus

Ist es möglich, dies in SOLR zu implementieren. Wenn ja, wie?

Antwort

1

Sie können ein separates Gewicht zu jedem Begriff in der Standard lucene Abfragesyntax geben (in einem Feld sucht text genannt):

text:black^10 text:doll^5 text:house 

Dies gibt black zehnmal so viel Gewicht wie house und doll fünf mal ein viel Gewicht wie house, aber nur die Hälfte des Gewichts von black. Sie müssen die Gewichte optimieren, um die Ergebnisse zu erhalten, nach denen Sie suchen. Wenn Sie den normalen Text im q= Feld mit (e) dismax als Abfrageparser verwenden möchten, können Sie bq verwenden, um diese Boosts aus der Abfrage selbst separat hinzufügen anzuwenden.

+0

Ich möchte q = „vollständigen Text“ verwenden, wie Suche in mehreren Feldern durch einen Parser durchgeführt wird. – sanju

+0

Dann können Sie 'bq' mit der' field: foo^boost'-Syntax verwenden, um Ihre Abfrage mit der bereits vorhandenen identisch zu machen. Sie können einzelne Begriffe nicht erhöhen, ohne diese Boosts irgendwo hinzuzufügen :-) – MatsLindh

0

Haben Sie versucht, die Bedingungen in der Abfrage zu steigern. Sie können für einen Begriff in der Abfrage einen anderen Boost-Wert angeben. Beispiel: Wenn Sie verwandeln Sie Ihre Anfrage an:

textfeild:black^6 textfeild:doll^5 textfeild:house^2

Sie erhalten Ergebnisse mit Top-Dokumente werden für Schwarz abgestimmt werden, neben schwarz, nächste mit Haus.

es vervielfacht Begriff Gewicht mit Anhebungswert. hier schwarz, mit 6, Puppe mit 5 und Haus mit 2.

+0

Ich möchte q = "vollständiger Text" verwenden, da die Suche in mehreren Feldern über einen Parser erfolgt. – sanju

+0

als @MatsLindh erwähnt in Betracht ziehen 'Boost Query (bq)', die einen Faktor angibt, um den ein Ausdruck oder eine Phrase "verstärkt" werden sollte – vinod

Verwandte Themen