Ich benutze Solr 3.6.1. Was ist der richtige Feldtyp für ein Solr-Sortierfeld, das ganzzahlige Werte enthält? Ich brauche dieses Feld nur zum Sortieren und mache keine Bereichsabfragen darauf. Sollte ich integer
oder sint
verwenden?Wie lautet der korrekte Solr-Feldtyp für die Sortierung ganzzahliger Werte?
Ich sehe, dass in schema.xml gibt sint
Typ deklariert ist als:
<!-- Numeric field types that manipulate the value into
a string value that isn't human-readable in its internal form,
but with a lexicographic ordering the same as the numeric ordering,
so that range queries work correctly. -->
<fieldType name="sint" class="solr.SortableIntField" sortMissingLast="true" omitNorms="true"/>
während integer
sagt der folgende:
<!-- numeric field types that store and index the text
value verbatim (and hence don't support range queries, since the
lexicographic ordering isn't equal to the numeric ordering) -->
<fieldType name="integer" class="solr.IntField" omitNorms="true"/>
Der Hauptgrund ich dies zu fragen, weil jeder Solr Sortiere ich auf ein sint
Feld (ich habe viele von ihnen als dynamische Felder deklariert) bevölkert den (nicht konfigurierbaren) Lucene FieldCache. Ich sehe auf der Statistikseite (http: // host: port/Solr/CORE/admin/stats.jsp) unter fieldCache dass sint
Sorten wie
org.apache.lucene.search.FieldCache$StringIndex
gespeichert sind, während integer
Sorten wie
org.apache.lucene.search.FieldCache.DEFAULT_INT_PARSER
was ich glaube, verbraucht weniger Platz?
UPDATE: Solr 3.6.1 schema.xml hat int
als TrieIntField
erklärt das heißt als
<fieldType name="int" class="solr.TrieIntField" precisionStep="0" positionIncrementGap="0"/>
Die oben von einer älteren Version solr war.
Sie sollten immer TrieIntField anstelle von IntField und SortableIntField verwenden: Diese Klasse hat eine ** viel ** mehr Speicher-effiziente FieldCache Impl – jpountz