1

我想在来自 DB 的评论中找到主题标签。为此,我将 Solr 的 RegexTransformer 与多值字段一起使用。我的问题是,Transformer 只提供字符串的第一个匹配项,而不是所有匹配项。

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

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

我知道在 Regex 方面我不是最好的,但根据http://www.regexplanet.com它应该按预期工作。

4

1 回答 1

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;
    }
于 2013-07-23T08:19:27.547 回答