楼主我看了一下你的介绍,主要运用了一下Apache组织新的开源项目—— Commons-VFS,其实就是把lucene的对文件系统的访问用这个开源项目替代,一会看一下源代码!

解决方案 »

  1.   

    看了一写源代码 楼主是用 Commons-VFS中的访问文件的方式写了两个类VFSIndexInput、VFSDirectory,继承并重写了BufferedIndexInput、Directory 里的相关方法。高手!谢谢楼主!
      

  2.   

    严重不赞同楼主的建议。采用FTP还是HTTP跨网访问整个索引记录,恕我直言,是很笨的做法!楼主谈到多机的磁盘索引共享问题,这里我从自己实际参与的电信项目谈谈想法。
    1.会采用多机群集的索引系统,通常是企业级应用,这样的应用有两大要求:索引量大,通常百万条记录,索引体积在G级;性能要求高,要求不高的就是用数据库查找咯。2.不论是采用FTP还是HTTP跨网访问整个索引记录,需要通过网络链接方式读取索引,这比在磁盘上读取索引慢的多。lucene之所以采用直接的文件系统访问,其中很大一个原因是效率问题。3.如果一定要通过网络访问,就目前的lucene解决方案中,可以采用hibernate3.0或者compass将索引建到数据库中,通过访问统一的数据库服务器,解决索引同步问题。但是,考虑实际效率问题,本人仍然觉得数据库连接池是个限制,速度还是慢,不推荐!4.目前实用的解决方式:1.采用共享磁阵(这是电信类应用的通常做法,当然这样就失去本篇文章的意义)2.搭建专用的索引服务器,对外提供索引服务(可以是web service或者最简单的http链接调用)。索引服务器对外提供的接口API包括:索引建立API,索引删除API(包括修改),索引搜索API。这种做法最大的差异是,对lucene索引库的操作在本服务器硬盘上进行,不论读写查询,特别查询时,只将查询的结果返回客户端,而不是将整个索引文件通过FTP或者HTTP传给客户端,再让客户端在自己的内存中搜索。同时也避免了网络异常造成的索引文件读写错误问题。