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



我在Solr (version 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的TRUE的值。

"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)

结果如下:

"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>

有人有同样的问题或解决方案吗?

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

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

我们正在回滚到5.5

最新更新