是否有一种很好的方法可以将Solr或客户端库提供给Solr来索引整个硬盘驱动器。这应包括zip文件中的内容,包括zip文件中的zip文件递归?
这应该可以在Linux上运行(没有仅限Windows的客户端)。
这当然包括从根(或实际上任何文件夹)对整个文件系统进行单次扫描。我不关心这一点,保持索引是最新的,只是最初创建它。这与Google停止使用的旧“Google桌面”应用类似。
答案 0 :(得分:2)
您可以使用SolrJ API操作Solr。
以下是API文档:http://lucene.apache.org/solr/4_0_0/solr-solrj/index.html
这里有一篇关于如何使用SolrJ索引硬盘上文件的文章 http://blog.cloudera.com/blog/2012/03/indexing-files-via-solr-and-java-mapreduce/
文件由InputDocument
表示,您使用.addField
附加您希望稍后搜索的字段。
以下是索引驱动程序的示例代码:
public class IndexDriver extends Configured implements Tool {
public static void main(String[] args) throws Exception {
//TODO: Add some checks here to validate the input path
int exitCode = ToolRunner.run(new Configuration(),
new IndexDriver(), args);
System.exit(exitCode);
}
@Override
public int run(String[] args) throws Exception {
JobConf conf = new JobConf(getConf(), IndexDriver.class);
conf.setJobName("Index Builder - Adam S @ Cloudera");
conf.setSpeculativeExecution(false);
// Set Input and Output paths
FileInputFormat.setInputPaths(conf, new Path(args[0].toString()));
FileOutputFormat.setOutputPath(conf, new Path(args[1].toString()));
// Use TextInputFormat
conf.setInputFormat(TextInputFormat.class);
// Mapper has no output
conf.setMapperClass(IndexMapper.class);
conf.setMapOutputKeyClass(NullWritable.class);
conf.setMapOutputValueClass(NullWritable.class);
conf.setNumReduceTasks(0);
JobClient.runJob(conf);
return 0;
}
}
阅读article了解详情。
压缩文件 以下是处理压缩文件的信息:Using Solr CELL's ExtractingRequestHandler to index/extract files from package formats
似乎有一些错误,Solr没有处理zip文件,这是带有修复的bug报告:https://issues.apache.org/jira/browse/SOLR-2416