我正在使用 Solr 3.6.1。用于包含整数值的 Solr 排序字段的正确字段类型是什么?我只需要这个字段来进行排序,并且永远不会对其进行范围查询。我应该使用integer
orsint
吗?
我看到在 schema.xml 中,sint
类型声明为:
<!-- 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
说以下:
<!-- 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"/>
我问这个的主要原因是因为我在一个sint
字段上执行的每个 Solr 排序(我有很多声明为动态字段)都会填充(不可配置的)lucene fieldCache。我在 fieldCache 下的统计页面 (http://HOST:PORT/solr/CORE/admin/stats.jsp) 上看到sint
排序存储为
org.apache.lucene.search.FieldCache$StringIndex
而integer
排序存储为
org.apache.lucene.search.FieldCache.DEFAULT_INT_PARSER
我相信哪个消耗更少的空间?
更新: Solr 3.6.1 schema.xml 已int
声明为TrieIntField
ie as
<fieldType name="int" class="solr.TrieIntField" precisionStep="0" positionIncrementGap="0"/>
上面的一个来自较旧的 solr 版本。