论坛首页 Java企业应用论坛

关于Lucene海量数据索引的问题

浏览 11271 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-05-13  
目前 Lucene 索引支持的最大DOCUMENTS数为 Integer.MAX_VALUE,
在海量数据环境下(文档量大于2147483647),有哪些更好的解决方案?
   发表时间:2007-05-14  
可以尝试类似于数据库分表结构的解决方案
比如说以文档文件名的第一个字母进行分类放在不同的文件路径中。
或者是以文档文件名的长度进行分类放在不同的文件路径中。

这样很容易就扩大到Integer.Max_Value*10倍以上的容量,如果不满意还可以再细分。

如果你的文档有分类,这样的解决方案可以更有效的进行搜索。
0 请登录后投票
   发表时间:2007-05-14  
wl95421 写道
可以尝试类似于数据库分表结构的解决方案
比如说以文档文件名的第一个字母进行分类放在不同的文件路径中。
或者是以文档文件名的长度进行分类放在不同的文件路径中。

这样很容易就扩大到Integer.Max_Value*10倍以上的容量,如果不满意还可以再细分。

如果你的文档有分类,这样的解决方案可以更有效的进行搜索。


假定所有的文档都属于同一个类目体系,需要全部作为检索查询的对象,
对文档进行分类就有一定难度,lucene 本身并不支持同时在多个索引目录中进行检索,
而且假设可以对超过Integer.Max_Value的数据量做检索,符合结果的检索条数超过Integer.Max_Value,那么lucene仍然会遇到困难,其返回结果集的数量限制在int下。。。
0 请登录后投票
   发表时间:2007-05-14  
将记录分组,只搜索某一个热门组,其余的就估算一个大致的结果。后台有些算法来保证热门记录移向热门组。
0 请登录后投票
   发表时间:2007-05-14  
blowfisher 写道

对文档进行分类就有一定难度,lucene 本身并不支持同时在多个索引目录中进行检索,

MultiSearcher不能在多个索引目录里检索吗?
0 请登录后投票
   发表时间:2007-05-14  
1、无论如何是一定要分目录的
2、MultiSearcher是可以检索多个目录,自行计算一下结果即可
3、超出Max_Value是没有意义的,因为想来用户不会全部浏览,所以应该加上boost来限制结果
4、我想像不出来为什么文档不能分类,即使无法逻辑分类,物理分类总是可以的?
5、可以考虑一下CRM,象JackRabbit,参考一下JLibrary
0 请登录后投票
   发表时间:2007-05-14  
to wl95421:
恩,分类是可行的

目前看来理想方案还是: 多索引目录 + MultiReader + Search


但是, 如果多个目录的文档总数超过max_integer, MultiReader.numDocs() 似乎仍然存在问题?



0 请登录后投票
   发表时间:2007-05-14  
重复提交内容,已删除
0 请登录后投票
   发表时间:2007-05-14  
1、你不一定要用它的MultiSearcher
可以自己写,这样不用担心numDocs的问题

2、再说一次,海量搜索的时候,不用boost是肯定死的,光搜索时间都会死人
0 请登录后投票
   发表时间:2007-05-14  
wl95421 写道
1、你不一定要用它的MultiSearcher
可以自己写,这样不用担心numDocs的问题

2、再说一次,海量搜索的时候,不用boost是肯定死的,光搜索时间都会死人


呵呵,谢了! lucene接触时间不久,这几天深入研究一下。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics