为什么copyfield不能在solr中使用PatternReplaceCharFilterFactory

时间:2016-01-27 07:42:17

标签: solr hbase cloudera-cdh

我的solr云版本在coudera cdh5.4.7中是4.10.3。我想使用copyfield将hbase rowkey复制到另一个字段并使用PatternReplaceCharFilterFactory删除一些模式。但是它不起作用。当我搜索文档时, rowkey_column和rowkey是相同的,没有剪切任何东西。例如,rowkey是

"HDSA00_01$41872607-9_11654094_1001292270_1443404975000$0"
,而rowkey_column必须是
"41872607-9_11654094_1001292270_1443404975000$0"
。但是我对rowkey也一样。为什么?请帮助我!
My config in schema.xml is here,rowkey is a string type:

<field name="rowkey_column" type="rowkeyColumn" indexed="true" stored="true" />  
<copyField source="rowkey" dest="rowkey_column"/>
<fieldType name="rowkeyColumn" class="solr.TextField">
  <analyzer>
    <charFilter class="solr.PatternReplaceCharFilterFactory" pattern="^\S{9}\$|^HealthArchives\$"   maxBlockChars="20000"  />
    <tokenizer class="solr.KeywordTokenizerFactory"/>
  </analyzer>
</fieldType>

1 个答案:

答案 0 :(得分:0)

你可能不希望$存在,因为它意味着&#34;字符串结束&#34;,这意味着唯一能匹配的是任何不是空格的东西,正好九个字符长。您还想添加replacement=""以表示应将其删除。

您还可以使用&#34;分析&#34;管理页面下的页面(至少对于本地Solr,我猜Cloudera具有相同的功能),可以准确了解该字段的分析链中每个步骤的文本处理方式。

copyField不应该与此相关,因为copyField指令在调用任何字段定义之前很久就会发生。