2017-05-17 4 views
0

Ich bin ein neuer Programmierer für Solr und Java, ich habe einige Probleme bei der Verwendung der benutzerdefinierten Transformator. Ich schreibe eine benutzerdefinierte Transformator meine Daten von MySQL zu formatieren, wie folgt aus:Solr - Wie importiere ich meinen eigenen Transformator in die Datei solr-data-config.xml?

package foo; 

import net.sf.json.JSONArray; 
import org.apache.solr.handler.dataimport.Context; 
import org.apache.solr.handler.dataimport.Transformer; 

import java.util.ArrayList; 
import java.util.List; 
import java.util.Map; 

public class TempleteTransformer extends Transformer{ 

    @Override 
    public Object transformRow(Map<String, Object> map, Context context) { 
     List<Map<String,String>> fieldlist = context.getAllEntityFields(); 
     for (Map<String,String> field : fieldlist){ 
      String trim = field.get("trim"); 
      if ("true".equals(trim)){ 
       String columnName = field.get("column"); 
       String value = String.valueOf(map.get(columnName)); 
       JSONArray ja = JSONArray.fromObject(value); 
       List sl = JSONArray.toList(ja); 
       List<String> strlist = new ArrayList<>(); 
       for (int i = 0; i < sl.size(); i++){ 
        strlist.add((String) sl.get(i)); 
       } 
       map.put(columnName,strlist); 
      } 
     } 
     return map; 
    } 

} 

ich dieses Projekt als JAR-Datei verpacken kann, aber wo soll ich das Glas setzen?

Und wie importiere ich es in solr-data-config.xml?

Ich habe das offizielle Dokument gelesen, aber es sagt nicht, wie man es benutzt.

Irgendwelche Vorschläge?

Antwort

0

Sie haben zwei Möglichkeiten:

  1. Dies ist die bevorzugte Art und Weise und legt es überall Sie mögen (dh YOURFULLPATH, ein dann in solrconfig.xml Sie es wie folgt umfassen:

    <lib dir="YOURFULLPATH" regex=".*\.jar" /> 
    

    Wenn Sie sich das Beispiel solrconfig.xml anschauen, sehen Sie, dass es verschiedene Varianten für die Verwendung gibt, die meisten davon funktionieren.

  2. wenn das obige nicht funktioniert, und Sie haben keine Lust auf Fehlerbehebung, können Sie einfach Ihre jar in Apache-Solr \ Server \ Software-Webapp \ Webapp \ WEB-INF \ lib \ und es sollte auch funktionieren.

0

in Ihrer server/solr/solr.xml Datei hinzufügen den Eintrag <str name='sharedLib'> und der Neustart Solr.

Zum Beispiel:

<solr> 

    <str name='sharedLib'>/opt/shared-lib</str> 

    <solrcloud> 

    <str name="host">${host:}</str> 
    <int name="hostPort">${jetty.port:8983}</int> 
    <str name="hostContext">${hostContext:solr}</str> 

    <bool name="genericCoreNodeNames">${genericCoreNodeNames:true}</bool> 

    <int name="zkClientTimeout">${zkClientTimeout:30000}</int> 
    <int name="distribUpdateSoTimeout">${distribUpdateSoTimeout:600000}</int> 
    <int name="distribUpdateConnTimeout">${distribUpdateConnTimeout:60000}</int> 
    <str name="zkCredentialsProvider">${zkCredentialsProvider:org.apache.solr.common.cloud.DefaultZkCredentialsProvider}</str> 
    <str name="zkACLProvider">${zkACLProvider:org.apache.solr.common.cloud.DefaultZkACLProvider}</str> 

    </solrcloud> 

    <shardHandlerFactory name="shardHandlerFactory" 
    class="HttpShardHandlerFactory"> 
    <int name="socketTimeout">${socketTimeout:600000}</int> 
    <int name="connTimeout">${connTimeout:60000}</int> 
    </shardHandlerFactory> 

</solr> 

in dem Verzeichnis /opt/shared-lib Ort der JAR-Dateien die Sie benötigen.

Diese JAR-Dateien werden über alle Ihre Kerne verteilt.

Für Solr-Versionen älter als 5.x befindet sich die Datei solr.xml in der $SOLR_HOME env var oder konfiguriert über die Java-Eigenschaft -Dsolr.solr.home.

Verwandte Themen