我的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>
答案 0 :(得分:0)
你可能不希望$
存在,因为它意味着&#34;字符串结束&#34;,这意味着唯一能匹配的是任何不是空格的东西,正好九个字符长。您还想添加replacement=""
以表示应将其删除。
您还可以使用&#34;分析&#34;管理页面下的页面(至少对于本地Solr,我猜Cloudera具有相同的功能),可以准确了解该字段的分析链中每个步骤的文本处理方式。
copyField不应该与此相关,因为copyField指令在调用任何字段定义之前很久就会发生。