我希望通过替换对我使用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 /中添加一个自定义类来进行模式转换?