2012-11-14 22 views
6

私はSolr 3.6.1を使用しています。整数値を含むSolrソートフィールドに使用する正しいフィールドタイプは何ですか?私はソートのためだけにこのフィールドが必要で、その上でレンジ・クエリーを実行しません。 integerまたはsintを使用する必要がありますか?私はこれを求めています主な理由は、すべてのSolrのため 整数値のソートに使用する正しいSolr fieldTypeは何ですか?

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

です

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

integer一方には、次の言葉:として

私はschema.xmlをして、宣言sintタイプがあることがわかり私はsintフィールド(私はそれらの多くが動的なフィールドとして宣言している)で行います(設定不可能な)lucene fieldCacheに値を設定します。 integerソートが

として格納されているのに対し、 sint種類が

org.apache.lucene.search.FieldCache$StringIndex

として格納されていることをfieldCache下(PORT/Solrの/ CORE /管理/ stats.jsp:// HOST HTTP)私は統計ページに表示します

org.apache.lucene.search.FieldCache.DEFAULT_INT_PARSER

私は少ないスペースを消費すると思いますか?


UPDATE:intは、上記のいずれかが古いSolrのバージョンからのものであった

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

としてTrieIntField即ちとしてのSolr 3.6.1のschema.xmlを宣言しました。

+3

IntFieldおよびSortableIntFieldの代わりに常にTrieIntFieldを使用する必要があります。このクラスは、メモリ効率の高いFieldCache impl – jpountz

答えて

7

あなたはSorts work correctly on both

Documentationとして "整数" を使用し、範囲クエリを必要としない場合: - SINTよう

ソート可能FieldTypes、sdoubleは誤った名称のビットです。それらは は上記の意味でのソートには必要ありませんが、RangeQueryクエリーの実行時には が必要です。ソート可能なのは実際には という文字列を正しく辞書順に並べ替えるという考え方を指します。つまり、これが行われないと、1.10ソート は辞書編集で1,10,2,3 ...と表示されますが、補修を使用しても、 となります。しかし、RangeQueryクエリを実行する必要がなく、 フィールドのみをソートする必要がある場合は、intまたはdoubleまたは同等の適切なクラス を使用してください。あなたは時間と記憶を守ります。

1

ソート可能なフィールドタイプは、Solr 5では推奨されていないため、使用しないでください。 solrのint型またはtint型のフィールドを使用できます

関連する問題