2011-01-06 8 views
3

Ich habe ein Feld, das als Zeichenfolge in Solr Schema.xml indiziert ist, die aus einer booleschen (Tinyint) Spalte in MySQL-Datenbank ist.Der Feldwert ist 1 oder wahr in solr Suchergebnissen

In Abfrage suche ich gegen dieses Feld mit 1. Aber ohne jede Änderung kann diese Abfrage nicht die richtigen Ergebnisse zurückgeben, wie es tat. Nachdem ich true statt 1 verwendet habe, hat es wieder funktioniert. Jetzt geht es wieder falsch aber mit true, kein Problem mit 1.

Was ist das genaue Problem hier? Muss ich den Feldtyp in schema.yml in integer ändern?

Vielen Dank im Voraus.

Antwort

5

Da es sich um ein Zeichenfolgenfeld handelt, können wir nicht wissen, wie Sie es indiziert haben. Es könnte "wahr"/"falsch" oder "1"/"0" oder "ein"/"aus" sein. Oder sogar eine Mischung aus diesen, vielleicht haben Sie einige Dokumente mit "wahr" und einige mit "1 ".

Wenn es semantisch ein boolean Feld I mit dem Booleschen Feldtyp empfehlen, zB:

<field name="inStock" type="boolean" indexed="true" stored="true" /> 

für das Sie den Booleschen Feldtyp arbeiten müssen deklariert (es im Standardschema erklärt kommt):

<fieldType name="boolean" class="solr.BoolField" sortMissingLast="true" omitNorms="true"/> 

Denken Sie daran, den Index nach dieser Änderung neu zu erstellen.

Verwandte Themen