2012-11-14 8 views
6

Używam Solr 3.6.1. Jaki jest poprawny typ pola do użycia w polu sortowania Solr zawierającym wartości całkowite? Potrzebuję tego pola tylko do sortowania i nigdy nie wykonuję zapytań dotyczących zakresu. Czy powinienem używać integer lub sint?Jaki jest poprawny typ pola Solr, który ma być używany do sortowania wartości całkowitych?

widzę, że w schema.xml istnieje sint typ zadeklarowany jako:

<!-- 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"/> 

natomiast integer mówi co następuje:

<!-- 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"/> 

Głównym powodem Pytam to dlatego każdy Solr sort ja robię na polu sint (mam wiele z nich zadeklarowanych jako pola dynamiczne) zapełnia (nie konfigurowalne) lucene poleCache. Widzę na stronie statystyk (http: // host: port/solr/CORE/admin/stats.jsp) pod fieldCache że sint rodzaju są przechowywane jako

org.apache.lucene.search.FieldCache$StringIndex

natomiast integer rodzaju są przechowywane jako

org.apache.lucene.search.FieldCache.DEFAULT_INT_PARSER

które według mnie zajmuje mniej miejsca?


UPDATE: Solr 3.6.1 schema.xml jest int zadeklarowane jako TrieIntField czyli jak

<fieldType name="int" class="solr.TrieIntField" precisionStep="0" positionIncrementGap="0"/>

Powyższy jeden był ze starszej wersji Solr.

+3

Powinieneś zawsze używać TrieIntField zamiast IntField i SortableIntField: ta klasa ma ** dużo ** bardziej wydajną pamięć FieldCache imp – jpountz

Odpowiedz

7

Jeśli nie potrzebujemy zapytania zakresem, użyć "całkowitą" jako Sorts work correctly on both

Documentation: -

Sortowanie FieldTypes jak sint, sdouble są nieco mylące. One nie są potrzebne do sortowania w sensie opisanym powyżej, ale są potrzebne podczas wykonywania zapytań RangeQuery. Sortables w rzeczywistości odwołują się do pojęcia porządkowania liczb w leksykograficzny sposób jako ciągi znaków . Oznacza to, że jeśli nie zostanie to zrobione, leksykograficznie liczby jako 1,10, 2, 3 ... Korzystanie z sint, jednak środki zaradcze to. Jeśli jednak nie musisz wykonywać kwerend RangeQuery i tylko trzeba posortować na polu, użyj po prostu równoważnej odpowiedniej klasy lub int lub . Zaoszczędzisz sobie czas i pamięć.

1

Sortowalne typy pól są przestarzałe w Solr 5 i nie powinny być używane. Można użyć pól pól koloru lub odcieni: