0

DIHを使用してデータをインポートしているので、文字列を解析し、2つの数値をキャプチャしてから、type = location( "lat、long"座標ペアを受け入れる)のフィールドに入力する必要があります。行うべき論理的なことは次のとおりです。

  <field column="latLong" 
         regex="Latitude is ([-\d.]+)\s+ Longitude is ([-\d.]+)\s+" 
         replaceWith="$1,$2" />

DIHは単一のキャプチャグループについてしか知らないようです。したがって、2ドルは使用されません。

誰かがregexTransformerで複数のキャプチャを使用したことがありますか?ドキュメントを検索しても、2ドルまたは3ドルの例は見つかりませんでした。Solrの祭司よ、何が与えられますか?

4

1 に答える 1

2

$2Solr DIHが、、$3などを理解していないというのは真実ではありません。

私はこれを試しました。これをDIHdata-config.xmlに追加しました:

<entity name="foo" 
        transformer="RegexTransformer" 
        query="SELECT list_id FROM lists WHERE list_id = ${Lists.id}">
    <field column="firstLastNum" 
           regex="^(\d).*?(\d)$" 
           replaceWith="$1:$2" 
           sourceColName="list_id"/>
</entity>

次に、schema.xmlにフィールドを追加しました

<field name="firstLastNum" type="string" indexed="true" stored="true"/>

list_id = 390でドキュメントのインデックスを作成したとき、firstLastNumは3:0でしたが、これは確かに正しいことです。

この問題は、最初の部分のみに一致し、2番目の部分には一致しない誤った正規表現が原因である可能性があります。たぶんこの正規表現を試してみてください:

regex="Latitude is ([-\d.]+)\s*Longitude is ([-\d.]+)"

もう1つの理由は、latLongがlocation型で$1,$2あり、文字列型である可能性がありますが、それについてはよくわかりません。

于 2013-02-23T04:02:17.740 に答える