1

DB からのコメントでハッシュタグを検索したい。そのために、Solr の RegexTransformer を多値フィールドと一緒に使用します。私の問題は、Transformer が文字列の最初の一致のみを配信し、すべての一致を配信しないことです。

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

たとえば、入力は#good#commentを多値フィールドに保存する必要があるため、「This is a #good #comment」ですが、#goodのみが到着します。

正規表現に関しては私が最高ではないことはわかっていますが、http://www.regexplanet.comによると、意図したとおりに機能するはずです。

4

1 に答える 1

0

わかりましたので、この動作は意図的なものであることがわかりました。常に 1 つの一致のみを返します。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 に答える