即使将字段显式设置为true,Solr 6.2布尔动态字段(_b后缀)也始终设置为false

时间:2016-09-21 08:30:48

标签: solr

我在Solr(6.2版)中遇到了这个问题。默认架构已定义了一些动态字段:

        <dynamicField name="*_i"  type="int"    indexed="true"  stored="true"/>
        <dynamicField name="*_is" type="ints"    indexed="true"  stored="true"/>
        <dynamicField name="*_s"  type="string"  indexed="true"  stored="true" />
        <dynamicField name="*_ss" type="strings"  indexed="true"  stored="true"/>
        <dynamicField name="*_l"  type="long"   indexed="true"  stored="true"/>
        <dynamicField name="*_ls" type="longs"   indexed="true"  stored="true"/>
        <dynamicField name="*_t"   type="text_general" indexed="true" stored="true"/>
        <dynamicField name="*_txt" type="text_general" indexed="true" stored="true"/>
        <dynamicField name="*_b"  type="boolean" indexed="true" stored="true"/>
        <dynamicField name="*_bs" type="booleans" indexed="true" stored="true"/>
        <dynamicField name="*_f"  type="float"  indexed="true"  stored="true"/>
        <dynamicField name="*_fs" type="floats"  indexed="true"  stored="true"/>
        <dynamicField name="*_d"  type="double" indexed="true"  stored="true"/>
        <dynamicField name="*_ds" type="doubles" indexed="true"  stored="true"/>

但是当发布文件时如下:

[{
 id:7,
 isActive_b:true,
 isReachable_b: 1,
 isWorthty_b:"True" 
}]

或(在XML中):

<add>
 <doc>
  <field name="id">7</field>
  <field name="isActive_b">true</field>
  <field name="isReachable_b">1</field>
  <field name="isWorthty_b">"True"</field>
 </doc>
</add>

使用对Solr来说应该被认为是真的所有值。

"BoolField: Contains either true or false. Values of "1", "t", or "T" in the first
character are interpreted as true. Any other values in the first character
are interpreted as false." (Solr Ref Guide 6.2)

结果如下:image

"response":{"numFound":1,"start":0,"maxScore":12.316666,"docs":[
      {
        "id":"7",
        "isActive_b":false,
        "isReachable_b":false,
        "isWorthty_b":false,
        "_version_":1546068272520101888}]
  }}

或(在XML中):

<result name="response" numFound="1" start="0" maxScore="12.316666">
  <doc>
    <str name="id">7</str>
    <bool name="isActive_b">false</bool>
    <bool name="isReachable_b">false</bool>
    <bool name="isWorthty_b">false</bool>
    <long name="_version_">1546068272520101888</long></doc>
</result>

任何有相同问题或有解决方案的人?

1 个答案:

答案 0 :(得分:1)

我们有同样的问题。在6.2上始终为假,在5.5上正常工作。 奇怪的是,使用Solr Web UI布尔值是正确设置的。

调试我们在查询后立即放置了一个断点,当返回SolrDocument时,布尔值已经错了。

我们正在回滚到5.5。