我在Solr schema.xml中定义了整数字段,如下所示。
<field indexed="true" multiValued="false" name="build_status" stored="true" type="TrieIntField"/>
并使用布尔类型复制Field定义如下。
<field name="build_status_b" stored="false" indexed="true" type="boolean" multiValued="false"/>
<copyField dest="build_status_b" source="build_status"/>
我设置了build_status值,该值是带有以下值的整数。 0,1,45,67 由于我的copyField - 类型为boolean的build_status_b,我应该看到错误或它将保持0和1并忽略45和67,因为这些数字不会进入布尔合约。但是,有趣的是我可以使用所有值搜索build_status_b:(0 1 45 67)。 copyFields如何真正起作用,如果它索引任何源字段,那么为字段build_status_b声明类型的重点是什么?
答案 0 :(得分:0)
如果您查看Solr wiki上的以下doc链接,您会看到bool字段类型将解释这些值以形成布尔值:
https://cwiki.apache.org/confluence/display/solr/Field+Types+Included+with+Solr
包含true或false。第一个字符中的“1”,“t”或“T”值被解释为true。第一个字符中的任何其他值都被解释为false。
作为参考,参见了copyFields的Solr文档:
https://cwiki.apache.org/confluence/display/solr/Copying+Fields
因此,对于您的上述值,它们将代表所述的布尔等价物:
0 - false
1 - true
45 - false
67 - false