我想在来自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,它应该按预期工作。
答案 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;
}