2013-02-14 44 views
0

我使用DIH導入數據,並需要解析一個字符串,捕獲兩個數字,然後填充type = location(它接受一個「緯度,長「座標對)。合乎邏輯的事情是:Solr DIH regexTransformer似乎只知道一個捕獲括號組

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

看來DIH只知道一個捕獲組。所以2美元永遠不會被使用。

有沒有人曾用regexTransformer使用多個捕獲?搜索文檔沒有提供任何2美元或3美元的例子。索爾的祭司啊,你們給了什麼?

+0

注意:Solr ver。 4.1。 – 2013-02-14 11:45:26

回答

0

這是不正確的,Solr的諦不明白$2$3等,

我只是嘗試這樣做。在DIH數據-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其中確實是正確的。

我懷疑這個問題可能是由於一個不正確的正則表達式只匹配第一部分而不是第二部分。也許嘗試此正則表達式:

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

另一個原因可能是,經緯度是location型和$1,$2是字符串類型的,但我不知道這一點。

+0

謝謝阿倫。澄清上面的問題。 – 2013-02-26 17:44:34

+0

您是否嘗試過替代正則表達式,或者您的正則表達式正常工作? – arun 2013-02-26 19:26:49