SOLR 7.1索引字段被视为字段 - 出现在结果中

时间:2018-01-18 21:47:09

标签: json solr

我正在将SOLR 4.10 db转换为SOLR 7.1

在4.10中,我有一个到期日期的字段,我限制了SOLR查询的范围,因此我在输出的字段中创建了一个类型为date的索引字段,带有一个复制字段。

<field name="IDX_ExpirationDate" type="date" indexed="true" stored="false" multiValued="true" />
<field name="ExpirationDate" type = "date" indexed = "true" stored = "true" />
<copyField source="ExpirationDate" dest="IDX_ExpirationDate"/>

使用4.10中的上述模式,当我运行查询时,我会按预期在结果中获得ExpirationDate。

 {
    ...
            "ExpirationDate":"2015-09-29T00:00:00Z",
    ...
    }

SOLR 7.1摆脱了&#34;日期&#34;并将其替换为名为&#34; pdate&#34;的类型,因此我在7.1模式中进行了更改(仅将更改日期更改为pdate)

<field name="IDX_ExpirationDate" type="pdate" indexed="true" stored="false" multiValued="true" />
<field name="ExpirationDate" type = "pdate" indexed = "true" stored = "true" />   
<copyField source="ExpirationDate" dest="IDX_ExpirationDate"/>

现在,当我运行SOLR 7.1查询时,我在结果中看到了ExpirationDate和IDX_ExpirationDate,更糟糕的是,它在日期周围添加了方括号。 (我在json中查看结果)。所以基本上有2个问题。第一个IDX_ExpirationDate不应该在结果中,因为&#34;存储&#34;架构中的属性为false。其次,方括号将日期视为数组而不是日期,并且无法进行JSON反序列化。

{
...
        "ExpirationDate":"2015-09-29T00:00:00Z",
        "IDX_ExpirationDate":["2015-09-29T00:00:00Z"],
...
}

是否有一个自4.10以来发生变化的设置会导致出现这种情况?或者我需要设置一个额外的属性吗?

我有其他IDX_项目,但它们都是type =&#34; text_general&#34;而不是pdate - 它们不会出现在查询结果中。

1 个答案:

答案 0 :(得分:1)

如果字段类型启用了docValues,并且Schema版本设置为至少1.6,则DocValues将用作stored value if the stored value is not available

  

对于架构版本&gt; = 1.6,隐式默认值为useDocValuesAsStored="true"

由于docValues需要使Point Dates可排序,我认为它们目前默认启用:

  

对于单值字段,必须使用docValues =“true”来启用排序。

为了“修复”这个,清除索引,为字段类型设置useDocValuesAsStored="false"并重新索引。但是你或多或少地免费得到这个,所以它确实应该不是问题。

您的值周围的[]是因为该值是以列表形式返回的,因为该字段是多值的。