刚刚想把lucene全文检索应用到网站中去,有一些问题,希望各位解答:
1、Hits获取到后,通过hits.Length()来获取搜索到的结果数,那么我想知道的是,这里hits的集合,里面是不是包括了所有的documents对象?如果是,那搜索出来数据量很大的话,不会导致内存益出?如果不是,那到我在循环的时候,通过hits.Doc(i)获取对象,这里是怎么获取,再动态的去索引文件里找?还是怎么样的?
2、分页问题,网站介绍的无非是在已搜索出来的hits集合里找出当前页所在的记录。这里有一个问题,那就是当我再一次按页码的时候,我怎么来保存已经搜索出来的hits集合,这里没有必要再去搜索一次,不然浪费IO资源。这里有什么好的解决办法?
1、 不是。实际上Lucene在索引时只是获取了前100个document 对象的DocId,Score等以及索引出来的结果总数。如果你通过 hits.Doc(i)获取对象,lucene 会判断i 是否超出了之前的缓存,如果超出了,会接下来获取新的100条记录来缓存,否则直接返回。
2、Lucene的建议是再搜索一次,并不浪费IO资源,因为搜索时只是查索引,而索引在你第一次查的时候已经缓存了。
下面是搜索引擎小组
http://space.cnblogs.com/group/search/
下面是搜索引擎团队博客
http://searchengine.cnblogs.com/
你可以从这些资源中获取更多帮助