IndexWriter writer = new IndexWriter(Dir, new StandardAnalyzer(Version.LUCENE_30), IndexWriter.MaxFieldLength.UNLIMITED) // 添加文档 //... IndexReader reader = writer.getReader(); //1.创建近实时reader IndexSearcher searcher = new IndexSearcher(reader); //2. 将reader封装到IndexIndexSearcher中 // 添加文档和删除文档 //.... IndexReader newReader = reader.reopen(); //3. 重新启动reader reader.close(); //4. 关闭旧的reader searcher = new IndexSearcher(newReader); //重新检索 //... newReader.close(); // 5.关闭 newReader writer searcher writer.close(); searcher.close();
1:分页一:将首次搜索多页结果收集起来并保存在ScoreDocs和IndexSearcher实例中。并在换页时展示结果。
2:分页二 :每次用户换页浏览时都是重新进行查询。
个人建议重新查询是最好的解决方法。
lucene 3.0 近实时搜索:
从2.9开始就有近实时搜索,如果IndexWriter实例和负责搜索的程序在同一个JVM 中,我们就可以使用近实时搜索,近实时搜索功能使你能够对新创建的,但还么有提交的段进行搜索。