schema.xml 数値型データタイプの前についてる t, s, p って何? て質問されたので、その答えをメモ


デフォルトで用意されている Solr の数値型データタイプには、基本形として int, float, long, double の4種類があります。


さらにそれぞれに最初に t, p , s が追加された、tint, pint, sint 等のバリエーションがあります。

schema.xmlのサンプルより抜粋

    
    
    
    

    
    
    
    

 
    
    
    

    
    
    
    


t ではじまるデータタイプは範囲指定検索( range queries )が高速にできます。範囲指定をよく使うフィールドに使うとよいでしょう。
上記で class="solr.TrieIntField" とあるようにトライ木(Trie)でデータ管理されています。


p と s は古いバージョンとの互換性のために存在しているのであまり気にしなくてもいいかもしれません。


p ではじまるデータタイプは数字を文字列として扱います。ソートすると文字コード順にソートされます。文字列なので範囲指定検索はできません。
上記で class="solr.IntField" とあるように初期の Solr ではこれがデフォルトでした。


s ではじまるデータタイプは数値として扱われます。ソートすると数値によってソートされます。
上記で class="solr.SortableIntField" とあるように ソートできる int ってことですね。


なお、t と p は date 型にもあります。日付の範囲指定検索をする場合には tdate を使うと性能が上がるかもしれません。


ではでは