我在Solr schema.xml中定义了整数字段,如下所示。<field indexed="true" multiValued="false" name="build_status" stored="true" type="TrieIntField"/>和copy字段定义如下,并使用布尔类型。
<field name="build_status_b" stored="false" indexed="true" type="boolean" multiValued="false"/> <copyField dest="build_status_b" source="build_status"/>
我将build_status值设置为整数,其值如下。由于我的布尔型copyField - build_status_b是0、1、45、67,所以我希望看到错误,否则它将保持0和1,而忽略45和67,因为这些数字不属于布尔契约。但是,有趣的是,我可以用所有的值搜索build_status_b:(0 1 45 67)。copyFields到底是如何工作的,如果它索引任何源字段,那么为字段build_status_b声明类型有什么意义呢?
发布于 2017-01-24 10:34:52
如果您查看Solr上的以下doc链接,您将看到bool字段类型将解释这些值以形成一个布尔值:
https://cwiki.apache.org/confluence/display/solr/Field+Types+Included+with+Solr
包含真或假。第一个字符中的"1“、"t”或"T“的值被解释为真。第一个字符中的任何其他值都被解释为false。
作为参考,以下是copyFields的Solr:
https://cwiki.apache.org/confluence/display/solr/Copying+Fields
因此,对于上述值,它们将代表所述的布尔等价物:
0 - false
1 - true
45 - false
67 - falsehttps://stackoverflow.com/questions/41817316
复制相似问题