2017-05-17 44 views
0

我是Solr和Java的新程序员,在使用自定义转换器时遇到一些问题。我写了一个自定义的转换格式从MySQL我的数据,像这样:Solr - 如何导入我自己的变压器到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; 
    } 

} 

我可以打包这个项目作为一个jar文件,但我应该在哪里把这个罐子?

而我如何将它导入solr-data-config.xml

我已阅读官方文档,但并未说明如何使用。

有什么建议吗?

回答

0

你有两种选择:

  1. 这是首选的方法:把它放在任何你喜欢(即YOURFULLPATH,然后一个在solrconfig.xml中,你有这样的:

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

    如果你看看示例solrconfig.xml,你会看到有不同的使用变化,其中大多数会起作用

  2. 如果由上述任何机会不起作用,并且您不想排除故障,只需将jar放入apache-solr \ server \ solr-webapp \ webapp \ WEB-INF \ lib \中即可。

0

添加在server/solr/solr.xml文件中的条目<str name='sharedLib'>和重启Solr的。

例如:

<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> 

进入目录/opt/shared-lib地方,你需要的jar文件。

这些jar文件将在所有内核之间共享。

对于Solr版本低于5.x的文件solr.xml位于$SOLR_HOME env var或通过java属性-Dsolr.solr.home配置。