分析结果和索引值之间的Solr差异

时间:2017-06-19 15:05:34

标签: solr

我希望通过替换对我使用Solr的少数复制字段的提取/索引值进行替换。

在我的schema.xml中,我有 source_file 字段,其中包含一个值。我将此值复制到集合字段中。然后我使用PatternReplaceCharFilterFactory(正则表达式/替换)来修改此值,如下所示:

<field name="source_file" type="string" indexed="true" stored="true" multiValued="false" docValues="false"/>

<field name="collection" type="collectionType" indexed="true" stored="true" multiValued="false"/>

<copyField source="source_file" dest="collection"/>

<fieldType name="collectionType" class="solr.TextField" stored="true" indexed="true">
  <analyzer type="index">
    <charFilter class="solr.PatternReplaceCharFilterFactory" pattern="A" replacement="B"/>
    <tokenizer class="solr.KeywordTokenizerFactory"/>
  </analyzer>
  <analyzer type="query">
     <charFilter class="solr.PatternReplaceCharFilterFactory" pattern="A" replacement="B"/>
     <tokenizer class="solr.KeywordTokenizerFactory"/>
  </analyzer>
</fieldType>

编辑1

在Solr webapp中,当我使用Analysis界面时,我发现模式替换适用于Index&amp;查询表格。 我的 source_file 值由设置值修改。这意味着我的架构的定义似乎是正确的。 A变为B。

但是,当我使用Solr Query时,我发现模式替换不起作用。没有考虑任何变化(我总是有值A)。

http://xxx:898x/solr/discovery_collection/select?fl=collection&indent=on&q=*:*&wt=json

结果显示,当我使用查询时,替换模式不会修改 collection 字段的值。

我已将所有配置完成到schema.xml中。没有进入solrconfig.xml。 我是否忘记了配置(进入solrconfig.xml?)以强制修改字段的索引?

编辑2

我在solrconf.xml中的请求处理程序:

 <requestHandler name="/select" class="solr.SearchHandler">
     <lst name="defaults">
       <str name="echoParams">explicit</str>
       <int name="rows">10</int>
           <str name="df">text</str>
       <str name="defType">edismax</str>
           <str name="timeAllowed">30000</str>
      <bool name="preferLocalShards">false</bool>
     </lst>
  </requestHandler>
  <requestHandler name="/query" class="solr.SearchHandler">
     <lst name="defaults">
       <str name="echoParams">explicit</str>
       <str name="wt">json</str>
       <str name="indent">true</str>
       <str name="df">text</str>
           <int name="rows">10</int>
           <str name="defType">edismax</str>
       <str name="timeAllowed">30000</str>
     </lst>
  </requestHandler>
  <requestHandler name="/update/extract"
                  startup="lazy"
                  class="solr.extraction.ExtractingRequestHandler" >
    <lst name="defaults">
      <str name="lowernames">true</str>
      <str name="uprefix">ignored_</str>

      <!-- capture link hrefs but ignore div attributes -->
      <str name="captureAttr">true</str>
      <str name="fmap.a">links</str>
      <str name="fmap.div">ignored_</str>
    </lst>
  </requestHandler>

编辑3

我刚刚看到它有效。但实际上价值&#34; B&#34;存储/索引,我可以通过查询搜索它,但值&#34; B&#34;不会显示在查询的json结果中(它显示值&#34; A&#34;)。

我有没有在solrconfig.xml中使用custuom updateRequestProcessorChain和requestHandler?并在lib /中添加一个自定义类来进行模式转换?

0 个答案:

没有答案