Ich möchte Dokumente steigern, die inStock sind: true und mit hoher Preis, in einer Weise, dass:Solr: wie ein boolean Feld in 1 abzubilden und 2 für die Steigerung
- inStock: true 1
- inStock: false ist 2
Damit ich die Produktion von Preis und inStock numerische Darstellung als Boost-Funktion verwenden kann:
document boost = (inStock == true ? 2 : 1) * price
Ist das möglich? Es gibt bereits eine question about boolean field boosting, aber es erfüllt meine Anforderung nicht.
UPDATE1:
SOLR-2136 in Solr implementiert 4 ist für die bedingte Funktion (if), die meinem Fall einfach macht. Da Solr 4 noch nicht freigegeben ist, gibt es eine Problemumgehung?
UPDATE2: Versuchen Sie, in Solr keinen booleschen Feldtyp zu verwenden. Es speichert 'T' für wahr und 'F' für falsch, und Sie müssen map() und ord() verwenden, um true zu 1 und false zu 0 zuzuordnen. Verwenden Sie einfach int für boolesche Werte, und wenn Sie nicht ' t Lassen Sie in Ihren booleschen Feldern null zu, indexieren Sie keine falschen Werte für Ihr Feld.
Ich indiziert sowohl wahr als auch falsch für inStock; Außerdem in der lexikographischen Ordnung von Solr ord (wahr) = 2, ord (falsch) = 1, was ich wollte. – Mohsen
@Mohsen Ok, perfekt. Aber sei sicher, dass du immer mindestens einen Gegenstand mit iStock = false hast, sonst wird dein True zu einer "1" !! – Omnaest