我是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
中导入它?
我已阅读官方文档但未说明如何使用。
任何建议?
答案 0 :(得分:0)
您有两种选择:
这是首选的方法:把它放在任何你喜欢的地方(即YOURFULLPATH,然后在solrconfig.xml中,你包括它:
<lib dir="YOURFULLPATH" regex=".*\.jar" />
如果您查看示例solrconfig.xml,您会看到使用的变体有不同,其中大部分都可以使用。
如果上述任何情况都不起作用,并且您不想进行故障排除,您可以将您的jar放入apache-solr \ server \ solr-webapp \ webapp \ WEB-INF \ lib \它也应该有用。
答案 1 :(得分: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文件将在所有核心中共享。
对于早于5.x的Solr版本,文件solr.xml
位于$SOLR_HOME
env var中,或通过java属性-Dsolr.solr.home
配置。