Solr仅索引其文本具有指定的最小长度/大小的内容

时间:2013-04-28 19:52:26

标签: solr dataimporthandler

我正在尝试导入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>

1 个答案:

答案 0 :(得分:0)

首先,(.*){5}将恰好匹配5个字符。 (.*){5,}将匹配五个或更多。因此对于200,它将是(.*){200,}

如果这不起作用,编写自定义变换器相当容易:

http://wiki.apache.org/solr/DIHCustomTransformer