2011-11-15 13 views
6

Quello che ho ora è le due filds matrimoniali:In dih Solr importare due doppie in un unico luogo

<field name="x_geo_x_coordinate" type="double" indexed="true" stored="true" default="0"/> 
<field name="x_geo_y_coordinate" type="double" indexed="true" stored="true" default="0"/> 

e quello che voglio: il 2 valore doppio in campo una posizione:

<field name="x_geo" type="location" indexed="true" stored="true" default="0.0,0.0"/> 

Quello che ho provato finora e non funziona:

<copyField source="*_coordinate" dest="x_geo"/> 
<copyField source="x_geo_str" dest="x_geo"/> 

Qualsiasi soluzione semplice? Grazie in anticipo!

risposta

3

Bene, tu dove sei giusto @ nikhil500. ScriptTransformer è una risposta, (non sono sicuro se questo è il più semplice). Il dataconfig.xml contiene una funzione java:

<script><![CDATA[ 
      function puttwodouble(row)  { 
       var attrVal1 = row.get("GEO_X_WERT"); 
       var attrVal2 = row.get("GEO_Y_WERT"); 
       var attrVal = attrVal1 + "," + attrVal2; 
       var arr = new java.util.ArrayList() 
       arr.add(attrVal1); 
       arr.add(attrVal2); 
       row.put("store",attrVal); 
       row.put("x_geo_str",arr); 
       return row; 
      } 
]]> 

tuute sarà chiamata:

<entity name="inner_geo_str" transformer="script:puttwodouble" 
      query="select GEO_X_WERT, GEO_Y_WERT from FIRMA_GEODATEN where GEO_FIR_NR ='${outer.FIR_NR}' and geo_x_wert != 'NF'">      
        <field column="GEO_X_WERT" name="x_geo_x_s"/> 
        <field column="GEO_Y_WERT" name="x_geo_y_s"/>      
      </entity> 

speranza che aiuterà gli altri a risolvere questo tipo di problema.

2

Usa TemplateTransformer in DIH (dati-config.xml):

<entity name="p" transformer="TemplateTransformer" ...... 
<field column="location" template="${p.location_0_coordinate},${p.location_1_coordinate}" /> 
2

Oltre alla risposta di PaulG, è possibile utilizzare location_rpt a Solr 4, che supporta valori multipli, ma non ha bisogno di essere dichiarato come MultiValue.

<field name="region" type="location_rpt" indexed="true" stored="true" />