Frage

Ich verwende SolrNet den Zugriff auf einen Solr-Index, wo ich ein mehrwertig Feld namens „Tags“. Ich möchte folgende Pseudo-Code-Abfrage ausführen:

(tags: stack) ^ 10 oder (tags: over) ^ 5 OR (tags: flow) ^ 2

Dabei steht der Begriff „Stapel“ wird um 10 erhöht wird, „über“ wird von 5 und „fließen“ verstärkt wird, durch 2. Das Ergebnis gesteigert wird ich bin nach ist, dass die Ergebnisse mit „Stack“ höher erscheinen als die mit "fließen", etc.

Das Problem, das ich habe, ist, dass sagen wir „fließen“ erscheint nur in ein paar Dokumente, sondern „Stack“ erscheint in Lasten, dann aufgrund eines hohen idf Wert, Dokumente mit „fließen“ erscheinen über die mit „stack “.

Wann war das Projekt gerade in Lucene implementiert wurde, habe ich ConstantScoreQuery und diese IdF die Partitur allein auf den Anhebungswert basierend eliminiert.

Wie kann dies mit Solr erreicht werden und SolrNet, wo ich effectivly Solr gerade vorbei eine Abfragezeichenfolge? Wenn es nicht kann, gibt es eine Alternative, wie ich dieses Problem nähern kann?

Vielen Dank im Voraus!

War es hilfreich?

Lösung

Ich glaube nicht, dass es eine Möglichkeit, um direkt eine ConstantScoreQuery in Solr auszudrücken, aber es scheint, dass die Bereich und Präfix Abfragen ConstantScoreQuery unter der Haube verwenden, so dass Sie eine Reihe Abfrage fälschen versuchen könnten, zB tags:[flow TO flow]

Alternativ können Sie Ihre eigene Solr QueryParser implementieren.

Andere Tipps

Solr 5.1 und später wird diese gebaut in die Query-Parser Syntax über den ^ = Operator.

Nehmen Sie also Ihre ursprüngliche Abfrage: (Tags: stack) ^ 10 oder (tags: over) ^ 5 OR (tags: flow) ^ 2

Und ersetzt die ^ mit ^ = Änderungen von verstärkt auf konstant: (Tags: stack) ^ = 10 OR (tags: over) ^ = 5 oder (tags: flow) ^ 2 =

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top