【问题标题】:SOLR 7.1 index field being treated as field - appearing in resultsSOLR 7.1 索引字段被视为字段 - 出现在结果中
【发布时间】:2018-01-18 21:47:08
【问题描述】:

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

在 4.10 中,我有一个过期日期字段,我用它来限制 SOLR 查询的范围,所以我创建了一个日期类型的索引字段,并带有一个复制字段,到输出中的一个字段中。

<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 去掉了“date”类型,取而代之的是一种叫做“pdate”的类型,所以我在 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 不应出现在结果中,因为架构中的“存储”属性为假。其次,方括号将日期视为数组而不是日期,并且无法进行 JSON 反序列化。

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

是否存在自 4.10 以来已更改的设置会导致出现此问题?还是我需要设置一个额外的属性?

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

【问题讨论】:

  • 最简单的方法是确定要从文档中获取的字段。 stackoverflow.com/questions/264907/…
  • 感谢您的建议,但我想弄清楚为什么它会出现在结果中 - 它不应该因为它是一个索引,也许我错过了一个设置或属性?或者 pdates 可能是一个特例?- 上面编辑过的问题。

标签: json solr


【解决方案1】:

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

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

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

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

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

值周围的[] 是因为该值作为列表返回,因为该字段是多值的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-06
    • 1970-01-01
    • 2012-08-03
    • 2013-01-13
    • 2019-12-13
    • 2011-12-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多