Solr的:是否PatternReplaceFilterFactory能够取代对copyField字

2019-11-02 13:29发布

我已经从索引和solr.xml是monitor.xml与Solr的产品包装中附带的数据,我增加了以下配置在Schema.xml文件

<field name="my_field" type="my_field_type" indexed="true" stored="true" required="false"/>
<copyField source="name" dest="my_field" />
<fieldType name="my_field_type" class="solr.TextField">
      <analyzer type="index">
        <tokenizer class="solr.KeywordTokenizerFactory"/>
        <filter class="solr.PatternReplaceFilterFactory" pattern=".*" replacement="NameChanged" replace="all" />
        <filter class="solr.LowerCaseFilterFactory"/>
      </analyzer>
      <analyzer type="query">
        <tokenizer class="solr.KeywordTokenizerFactory"/>
        <filter class="solr.LowerCaseFilterFactory"/>
      </analyzer>
</fieldType>

它复制字段类型(my_field_type)的(名称)字段(my_field)。 在(my_field_type),我用PatternReplaceFilterFactory试图替换字符串“NameChanged”的一切。 其结果是,它没有复制(名称)字段和它的值(my_field),但价值仍停留在same.For例如下面的返回与(名称)的结果和(my_field)领域,这两个值字段是相同的,它并没有改变价值“NameChanged”的字段(my_field)

<?xml version="1.0" encoding="UTF-8"?>
<response>

<lst name="responseHeader">
  <int name="status">0</int>
  <int name="QTime">2</int>
  <lst name="params">
    <str name="fl">id,name,my_field,</str>
    <str name="indent">true</str>
    <str name="q">*:*</str>
    <str name="_">1380593840070</str>
    <str name="wt">xml</str>
  </lst>
</lst>
<result name="response" numFound="2" start="0">
  <doc>
    <str name="id">SOLR1000</str>
    <str name="name">Solr, the Enterprise Search Server</str>
    <str name="my_field">Solr, the Enterprise Search Server</str></doc>
  <doc>
    <str name="id">3007WFP</str>
    <str name="name">Dell Widescreen UltraSharp 3007WFP</str>
    <str name="my_field">Dell Widescreen UltraSharp 3007WFP</str></doc>
</result>
</response>

那么,请问PatternReplaceFilterFactory能够取代对copyField字段值,然后指数呢? 如果是的话,我做了什么错在上面的配置?

Answer 1:

该分析仪链是字段的标记化 (搜索)表示。 你是显示的结果是原来存储的表示。 这就是为什么你不会看到任何改变的方式。

取而代之的是,检查或者在字段分析器屏幕或模式描述字段(一个复选标记加载的令牌)的管理员界面的标记化表示。 或者,对于一个快速测试,使用my_field作为一个方面,作为小使用实际令牌。

如果你想改变实际存储的表示,还有一个索引,你是用UpdateRequestProcessor链更好CloneFieldUpdateProcessorFactory和RegexReplaceProcessorFactory 。 这是一个在solrconfig.xml中定义的,并且对文件被存储/在所有收录之前。



文章来源: Solr: Does the PatternReplaceFilterFactory able to replace the field value for copyField and then index it?