【问题标题】:Solr - How to import my own transformer to solr-data-config.xml?Solr - 如何将我自己的转换器导入到 solr-data-config.xml?
【发布时间】:2017-05-17 08:42:25
【问题描述】:

我是 Solr 和 Java 的新程序员,在使用自定义转换器时遇到了一些问题。我编写了一个自定义转换器来格式化 MySQL 中的数据,如下所示:

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文件,但是我应该把这个jar放在哪里呢?

以及如何将其导入solr-data-config.xml

我已经阅读了官方文档,但没有说明如何使用。

有什么建议吗?

【问题讨论】:

    标签: java xml solr


    【解决方案1】:

    你有两个选择:

    1. 这是首选方式:将其放在您喜欢的任何位置(即 YOURFULLPATH,然后在 solrconfig.xml 中,您可以像这样包含它:

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

      如果您查看示例 solrconfig.xml,您会看到使用的不同变体,其中大多数都可以工作。

    2. 如果上述方法不起作用,并且您不想进行故障排除,您可以将 jar 放入 apache-solr\server\solr-webapp\webapp\WEB-INF\lib\它也应该可以工作。

    【讨论】:

      【解决方案2】:

      在您的server/solr/solr.xml 文件中添加条目&lt;str name='sharedLib'&gt; 并重新启动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 文件将在您的所有内核之间共享。

      对于早于 5.x 的 Solr 版本,文件 solr.xml 位于 $SOLR_HOME 环境变量中或通过 java 属性 -Dsolr.solr.home 配置。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-02-16
        • 1970-01-01
        • 2011-09-15
        • 1970-01-01
        • 2015-03-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多