SOLR 7.1将空字段从查询结果中删除

时间:2018-01-23 20:24:41

标签: solr

我正在将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中时,为这些行返回的文档没有Phone字段

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

看看唐纳德如何拥有一个电话号码可能是因为有一个非空白的&#34;电话号码。

这是自4.10以来添加的东西吗?

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

更新

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

1 个答案:

答案 0 :(得分:1)

我修好了。

迁移时,我创建了一个新的7.1核心,它创建了一个新的SOLRConfig.XML,然后我从4.10核心带来了配置。

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

 <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,我遇到的问题就消失了。