Ja, ich denke, Ihre Verbindung ist eine vernünftige Idee. Es ist das, was wir verwenden, weil wir erzwingen möchten Boosts auf alle Suchanfragen sind und wir nicht sehr oft die Logik ändern, zum Beispiel in Ihrem Fall: -
<requestHandler name="/select" class="solr.SearchHandler">
<lst name="defaults">
<str name="defType">edismax</str>
<str name="boost">product(
map(query($type1query),0,0,1,$type1boost),
map(query($type2query),0,0,1,$type2boost))</str>
<str name="type1query">Category:"News"</str>
<double name="type1boost">1000.0</double>
<str name="type2query">Category:"Image"</str>
<double name="type2boost">900.0</double>
</lst>
</requestHandler>
In diesem Fall wird die Abfrage-Funktion gibt die Punktzahl die spezifische Abfrage Das sucht nach Übereinstimmung für Nachrichten, Bild usw. in der Kategorie.
Die Kartenfunktion hat die folgende Signatur: map (x, min, max, target, value) bildet alle Werte der Funktion x ab, die innerhalb von min und max inklusive Ziel liegen. min, max, target, value sind Konstanten. Er gibt den Feldwert (oder "Wert") aus, wenn er nicht zwischen Min und Max liegt. Mit anderen Worten, wenn das Ergebnis der Abfrage ein positiver Wert ist (es gibt eine Übereinstimmung), wird die Erhöhung (1000, 900 usw.) ausgegeben. Sie müssen mit den Boost-Werten spielen, da sie jede andere Ranglistenlogik, die Sie haben, überfordern können. Sie können schlechte Nachrichten auf der ersten Rangliste bekommen, wenn es eine bessere Übereinstimmung auf Video gibt.
Sie könnten mit diesen Boosts einen separaten Anforderungshandler erstellen, damit Sie sie für andere Suchen umgehen können. Offensichtlich müssen Sie solrconfig ändern und Solr neu starten, wenn Sie Änderungen vornehmen, was ein Problem sein kann.
Ansonsten sehen Sie sich den Parameter bq (Boost-Abfrage) an.
bq=Category:News^1000.0+Category:Image^900...
, die tatsächlich so etwas wie dies unter der Decke
boost(+*:* (Category:News^1000 + Category:Image^900))
Dies erzeugt bedeutet, dass die Schübe bei der Suche Code fertig sind, die schön und flexibel ist. Persönlich bevorzuge ich diese Art zu arbeiten.