Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on May 10th, 2012  |  syntax: None  |  size: 2.32 KB  |  hits: 35  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. <entity name="mainProductData" transformer="RegexTransformer,org.build.com.solr.FacetsTransformer" query="select facets from y">
  2.         <field column="facets" splitBy="|"/>
  3. </entity>
  4.  
  5. Here is the format of the facets field:
  6. ADA=boolean=Yes|Category=string=Kitchen Faucets|Category=string=Pullout Kitchen Faucets|Country of Origin=string=USA|Eco Friendly=boolean=No|Escutcheon Included=boolean=Yes|Faucet Centers=numeric=0|Faucet Holes=numeric=1|Filtering=boolean=No|Flow Rate (GPM)=numeric=2.20|Handle Style=string=Metal Lever|Handles Included=boolean=Yes|Height=numeric=16.63|Hose Length=numeric=33|Installation Type=string=Deck Mounted|Low Lead Compliant=Boolean=Yes|MasterFinish=String=Bronze Tones|MasterFinish=String=Chromes|MasterFinish=String=Nickel Tones|Material=string=Metal|Max Deck Thickness=numeric=1.38|Number Of Handles=numeric=1|Pre Rinse=boolean=No|Pullout Spray=boolean=Yes|Sidespray=boolean=No|Soap Dispenser Included=boolean=No|Spout Height=numeric=10.00|Spout Reach=numeric=9.50|Spout Swivel=numeric=360|Spout Type=string=Swivel|Sub Category=string=Pullout Spray Faucets&#x0D;
  7. |Theme=string=Traditional / Classic|Valve Type=string=Ceramic Disc|Width=numeric=10.5|
  8.  
  9. Here is my custom transformer code:
  10. package org.build.com.solr;
  11.  
  12. import org.apache.solr.handler.dataimport.Context;
  13. import org.apache.solr.handler.dataimport.Transformer;
  14.  
  15. import java.util.List;
  16. import java.util.Map;
  17.  
  18. public class FacetsTransformer extends Transformer {
  19.        
  20.         public Object transformRow(Map<String, Object> row, Context context) {
  21.                 Object tf = row.get("facets");
  22.                         if (tf != null) {
  23.                                 if (tf instanceof List) {
  24.                                         List list = (List) tf;
  25.                                         for (Object o : list) {
  26.                                                 String[] arr = ((String) o).split("=");
  27.                                                 if (arr.length == 3) row.put(arr[0].replaceAll("[^A-Za-z0-9]", "") + "_" + arr[1], arr[2]);
  28.                                         }
  29.                                 } else {
  30.                                         String[] arr = ((String) tf).split("=");
  31.                                         if (arr.length == 3) row.put(arr[0].replaceAll("[^A-Za-z0-9]", "") + "_" + arr[1], arr[2]);
  32.                                 }
  33.                                 row.remove("facets");
  34.                         }
  35.                         return row;
  36.         }
  37. }
  38.  
  39.  
  40. Here is my schema:
  41.    <dynamicField name="*_string" type="facetstring" indexed="true" stored="true" multiValued="true"/>
  42.    <dynamicField name="*_numeric" type="tfloat" indexed="true" stored="true" multiValued="true"/>
  43.    <dynamicField name="*_boolean" type="boolean" indexed="true" stored="true"/>