2013-07-22 70 views
0

我想在来自数据库的注释中查找主题标签。为此,我使用Solr的RegexTransformer和多值字段。我的问题是,变压器只传递字符串的第一个匹配,而不是所有的匹配。Solr RegexTransformer仅将多维字段的第一个匹配项

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

所以例如“这是一个#良好#评论”作为输入应保存#好#评论在多值字段,但只#良好到达。

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

回答

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; 
    } 
相关问题