Daniel
Daniel

Reputation: 31

Solr 6.2 boolean dynamic fields (_b suffix) are always setting to false even if explicitly setting a field to true

I am facing this issue with Solr (version 6.2). The default schema has defined some dynamic fields:

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

But when a post a document like the following:

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

or (in 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>

Using all the values that were supposed to be considered TRUE to 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)

The result is the following: image

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

or (in 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>

Anyone with the same problem or with a solution for it?

Upvotes: 0

Views: 705

Answers (1)

user3025429
user3025429

Reputation: 26

We have the same issue. Always to false on 6.2, working ok on 5.5. The strange thing is that using the Solr Web UI booleans are correctly set.

Debugging we placed a breakpoint right after the query, when SolrDocument are returned, and booleans were already wrong.

We are rolling back to 5.5.

Upvotes: 1

Related Questions