Solr RegexTransformer仅将第一个匹配到多值字段

时间:2013-07-22 07:57:20

标签: regex solr multivalue

我想在来自DB的评论中找到主题标签。为此,我使用Solr的RegexTransformer和多值字段。我的问题是,Transformer只传递String的第一个匹配而不是所有匹配。

boards.xml:<field column="hashtag" sourceColName="comment" regex="(#[^.!\s]+)" /> schema.xml:<field name="hashtag" type="string" multiValued="true" />

所以,例如“这是#good #comment”,因为输入应该在多值字段中保存 #good #comment ,但只有#good到达。

我知道当谈到正则表达式时我不是最好的,但根据http://www.regexplanet.com,它应该按预期工作。

1 个答案:

答案 0 :(得分:0)

好的,所以我发现,这种行为是有目的的。它总是只返回一个匹配。我使用ScriptTransformer

解决了这个问题
function CommentPieces(row){
        var reg = new RegExp(/(#[^.!\s]+)/g);
        var arr = new java.util.ArrayList();
        while((result = reg.exec(row.get('comment'))) !== null) {
            if(!arr.contains(result[0])){
                arr.add(result[0]);
            }
        }
        row.put('hashtag', arr);
        return row;
    }