我正在尝试导入allemanic wikipedia xml-dump。我指定了一些正则表达式规则来忽略类别,文件,模板等维基百科页面......这种配置确实有效。
但后来我想将索引限制为具有长度至少为200个字符的内容字段的文档。但我想不出有任何办法。我尝试了一些正则表达式但是索引总是会立即失败(似乎(。*){5}似乎不受支持?)。
有没有人知道solr支持的正则表达式跳过只有200个或更少字符的文档?或者还有其他方法来实现这种行为吗?
<dataConfig>
<dataSource type="FileDataSource" encoding="UTF-8" />
<document>
<entity name="page" processor="XPathEntityProcessor" stream="true" forEach="/mediawiki/page/" url="/home/patrick/Desktop/alswiki-20130413-pages-articles.xml" transformer="RegexTransformer,DateFormatTransformer,HTMLStripTransformer,TemplateTransformer">
<field column="origid" xpath="/mediawiki/page/id" />
<field column="id" regex="^(.*)$" replaceWith="als-$1" sourceColName="origid" />
<field column="name" xpath="/mediawiki/page/title" />
<field column="revision_id" xpath="/mediawiki/page/revision/id" />
<field column="user" xpath="/mediawiki/page/revision/contributor/username" />
<field column="contents" xpath="/mediawiki/page/revision/text" stripHTML="true" />
<field column="timestamp" xpath="/mediawiki/page/revision/timestamp" dateTimeFormat="yyyy-MM-dd'T'hh:mm:ss'Z'" />
<field column="source" template="Swiss Wiki"/>
<field column="$skipDoc" regex="^#REDIRECT.*" replaceWith="true" sourceColName="contents"/>
<field column="$skipDoc" regex="^#WEITERLEITUNG.*" replaceWith="true" sourceColName="contents"/>
<field column="$skipDoc" regex="^#Redirect.*" replaceWith="true" sourceColName="contents"/>
<field column="$skipDoc" regex="^Wikipedia:.*" replaceWith="true" sourceColName="name"/>
<field column="$skipDoc" regex="^MediaWiki:.*" replaceWith="true" sourceColName="name"/>
<field column="$skipDoc" regex="^Vorlage:.*" replaceWith="true" sourceColName="name"/>
<field column="$skipDoc" regex="^Datei:.*" replaceWith="true" sourceColName="name"/>
<field column="$skipDoc" regex="^Hilfe:.*" replaceWith="true" sourceColName="name"/>
<field column="$skipDoc" regex="^Portal:.*" replaceWith="true" sourceColName="name"/>
<field column="$skipDoc" regex="^Kategorie:.*" replaceWith="true" sourceColName="name"/>
</entity>
</document>
</dataConfig>
答案 0 :(得分:0)
首先,(.*){5}
将恰好匹配5个字符。 (.*){5,}
将匹配五个或更多。因此对于200,它将是(.*){200,}
。
如果这不起作用,编写自定义变换器相当容易: