如果一个字段适合任何一个字段,我应该更喜欢我的Solr模式中的整数或字符串吗?

And*_*ter 4 lucene solr

假设我的Solr架构中有一个字段,其值为1,2,3或4.我对此字段不进行算术运算.该字段是记录的状态.它可以很容易地成为A,B,C或D.11,000,000个记录中的每一个都具有这些状态之一.

这个问题中,一个答案说,整数"更节省内存",所以这是一个开始.还有其他因素需要考虑吗?一个匹配比另一个快吗?

该字段不会被排序.这些值是任意的,我们永远不会进行排序.它只会用于过滤查询.

Mik*_*oss 6

你会问一个范围吗?因此,如果您的1 ... 4真的标记为Bad to Great的状态,您是否会查询1-2的记录?这是你可能需要它们成为唯一的东西(而且,因为你只有4个,所以它不是那么大的交易).

我在数据存储方面的规则是,如果int永远不会被用作int,那么将它存储为字符串.它可能需要更多空间等,但你可以做更多的字符串操作等.如果一个字段是字符串或int(11m是很多记录,但不是重负载),11m记录的内存要求可能无关紧要对于Solr/Lucene).