Apache Solr Field数据类型从字符串更改

时间:2018-11-20 18:13:01

标签: apache solr lucene

solr核心中的一个字段是数据类型字符串,但是它不能适应该字段的值的长度,所以我希望将其更改为其他一些可以容纳字符串的数据类型, >

不幸的是,text_general与字符串而非字符串相似,因此无济于事。 还有其他数据类型可以帮助您吗?

2 个答案:

答案 0 :(得分:2)

一个字段是否是多值的(您要描述的是什么),在字段类型上配置了默认值,但是对于您所要使用的每个字段,该值都可以覆盖定义。因此,stringstrings之间的区别只是后者以multiValued="true"作为默认值,而stringmultiValued="false"作为默认值。

在实际定义字段时,您可以覆盖此字段,以说明文档是否允许特定字段具有多值功能,而与字段类型定义的内容无关。

<field name="string_field" type="string" multiValued="true"/>

将与strings字段类型相同,因为它明确允许该字段在该字段中具有多个值。

因此,在您的情况下,您可以使用text_general-默认情况下可能不会将其设置为multiValued,但是可以在定义字段时进行配置。

<field name="your_field_name" type="text_general" multiValued="true" />

text_generalstring之间的区别在于text_general上已应用了分析链和令牌生成器,因此文本在内部被拆分为较小的令牌。

Lucene对每个令牌有32768个字符的硬限制,这是在将较大的值索引到string字段中时遇到的限制。

如果您要将大Blob存储在Solr中,我可能会建议将它们放入Amazon S3或其他数据存储中,而不是将生成的ID存储在Solr中。这样,索引大小就可以保持较低,并且在合并段时可以减少开销。

答案 1 :(得分:0)

text_general是一个字符串数组。因此,如果您要查找类似于字符串数据类型的类型(例如数组),那么text_general应该可以。

text_general的另一个优点是它允许标记化。字符串没有。