2010-05-04 64 views
2

如何读取存储在HDFS上的lucene索引目录,即如何获取存储在HDFS上的索引的IndexReader。 IndexReader将在地图任务中打开。打开存储在hdfs中的lucene索引

是这样的:的IndexReader读者= IndexReader.open( “HDFS /路径/到/索引/目录”);

感谢, AKHIL

回答

2

如果你想打开一个储存在HDFS进行搜索的目的Lucene索引,你的运气了。 AFAIK,没有实现允许搜索操作的HDFS目录。这种情况的一个原因是,HDFS针对大块的连续读取进行了优化,而Lucene所产生的不是随机读取的小数据。

在Nutch的项目中,有HDFSDirectory的实现,你可以用它来创建的IndexReader,但只能删除操作的工作。 Nutch只使用HDFSDirectory来执行文件重复数据删除。

+0

的确有一个目录的实施http://hadoop.apache.org/common/docs/r0.18.3/api/org/apache/hadoop/contrib/index/lucene/FileSystemDirectory.html到开放Lucene的目录进行一般的FS系统 – Akhil 2010-05-07 10:08:14

+0

但不幸的是我得到这个AbstractMethodError http://stackoverflow.com/questions/2763038/java-abstractmethoderror当我用IndexReader.open(新FileSystemDirectory(.....))。在map任务 – Akhil 2010-05-07 10:11:41

+0

没有意识到FileSystemDirectory存在。但我会保持警惕。它似乎没有被积极维护。 – bajafresh4life 2010-05-07 13:16:19

1

我认为Katta项目可能是你正在寻找的。我自己并没有使用它,但最近一直在研究这些解决方案,这似乎符合法案。

它采用分片索引Lucene的分布式版本。

http://katta.sourceforge.net/