2015-10-16 112 views
0

据我所知,在SimplePostTool(post.jar)中,有这个命令可以自动检测文件夹中的内容类型,并递归扫描文件索引到一个集合中:
bin/post -c gettingstarted afolder/递归扫描SolrJ文件夹索引文件

这对于我对文件夹中的所有文件进行大量索引是非常有用的。现在我正在转向生产并计划使用SolrJ来执行索引,因为它可以执行更多的功能,如健壮性检查和对失败索引的退役。

但是,我似乎无法找到一种方法来在SolrJ中做同样的事情。 SolrJ可以做到这一点吗?我正在使用Solr 5.3.0

谢谢。

问候,
埃德温

回答

1

如果您正在寻找内容提交到提取请求处理程序(用于索引PDF文件和类似的丰富的文档),您可以使用ContentStreamUpdateRequest方法在Uploading data with SolrJ所示:

SolrClient server = new HttpSolrClient("http://localhost:8983/solr/my_collection"); 
ContentStreamUpdateRequest req = new ContentStreamUpdateRequest("/update/extract"); 
req.addFile(new File("my-file.pdf")); 
server.request(req); 

要在Java中递归地遍历目录结构,请参阅Best way to iterate through a directory in Java

如果您打算为普通内容编制索引(而不是使用请求处理程序),您可以通过在SolrJ本身创建文档然后将文档提交给服务器来完成此操作 - 无需将它们写入到临时文件在两者之间。

+0

谢谢MatsLindh。是的,这工作。但是,如果文件名中有非英文字符(例如:中文),你知道该怎么办吗?目前,它被看作是一系列'???'。 –

+0

@EdwinYeo您可能需要做一些工作,将其转换为适当的unicode,具体取决于基础文件系统:请参阅http://stackoverflow.com/questions/3072376/how-can-i-open-files-containing-accents -in-java寻找可能的解决方案 - 但它似乎是一个可能由代码中的许多不同级别引起的问题。 – MatsLindh

+0

谢谢。我已经设法让它读取Eclipse中的中文字符。但是,当我使用UTF-8编码的URLEncoder将Solr中的中文字符索引为索引时,它将索引为“%E7%AB%8B%E9”而不是中文字符。原因是什么? –