我已经索引了 solr 包附带的 solr.xml 和 monitor.xml 中的数据,并在 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>
它将 (name) 字段复制到 fieldType (my_field_type) 的 (my_field)。在 (my_field_type) 中,我使用 PatternReplaceFilterFactory 尝试用字符串“NameChanged”替换所有内容。结果是它确实将(name)字段及其值复制到(my_field),但值仍然保持不变。例如下面返回的结果带有(name)和(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 的字段值然后对其进行索引?如果是,我在上面的配置中做错了什么?