【问题标题】:SOLR 7.1 Leaving empty fields out of query resultsSOLR 7.1 在查询结果中保留空字段
【发布时间】:2018-02-01 00:29:05
【问题描述】:

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

在 4.10 中,我有一个电话号码字段(这是该字段的架构信息):

<field name="Phone" type="string" indexed="false" stored="true"/>

在SOLR中插入文档时,有些文档Phone的值为空字符串或单个空格。

针对 SOLR 4.10 运行查询时,返回的文档在 Phone 中有一个空白或单个空格,在文档中包含 phone 字段:

...
"FirstName":"Bob, No Phone",
"Phone":"",
"State":"WA"
...
"FirstName":"Sandy, No Phone",
"Phone":""
"State":"CA"
...
"FirstName":"Donald, With Phone",
"Phone":"123-123-1234",
"State":"NY"
...

但是当这些相同的行插入 SOLR 7.1 时,为这些行返回的文档没有电话字段

...
"FirstName":"Bob, No Phone",
"State":"WA"
...
"FirstName":"Sandy, No Phone",
"State":"CA"
...
"FirstName":"Donald, With Phone",
"Phone":"123-123-1234",
"State":"NY"
...

看看唐纳德是如何拥有电话号码的,可能是因为有一个“非空白”电话号码。

这是从 4.​​10 开始添加的东西吗?

是否有可以重新开启 4.10 行为的架构设置或 SOLRConfig.xml 设置?

更新

我还查看了两个盒子上安装的 Java 版本——SOLR 4.10 盒子有 java 1.8.0_161,SOLR 7.1 盒子有 java 1.8.0_40。我不认为 java 版本差异会导致 - 我相信 SOLR 只需要 1.8。

【问题讨论】:

  • 据我所知,这种行为不应该改变;您的架构是明确定义的还是使用无架构模式?
  • 明确定义
  • @MatsLindh - 还有其他想法吗?

标签: solr


【解决方案1】:

我修好了。

迁移时我创建了一个新的 7.1 内核,它创建了一个新的 SOLRConfig.XML,然后我从 4.10 内核中引入了配置。

7.1 中的默认 SOLRConfig.xml 包含一个使用 RemoveBlankFieldUpdateProcessorFactory 的 updateRequestProcessorChain。

 <updateRequestProcessorChain name="add-unknown-fields-to-the-schema" default="${update.autoCreateFields:true}"
           processor="uuid,remove-blank,field-name-mutating,parse-boolean,parse-long,parse-double,parse-date">
    <processor class="solr.LogUpdateProcessorFactory"/>
    <processor class="solr.DistributedUpdateProcessorFactory"/>
    <processor class="solr.RunUpdateProcessorFactory"/>
  </updateRequestProcessorChain>

这个链似乎是无模式的,所以我注释掉了整个 updateRequestProcessorChain,我遇到的问题就消失了。

【讨论】:

  • 好发现! (当我询问无模式模式时,我有点在那个轨道上)
猜你喜欢
  • 1970-01-01
  • 2022-01-08
  • 2017-09-26
  • 1970-01-01
  • 2011-05-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多