黑马程序员技术交流社区

标题: 【郑州校区】Lucene的高级使用之分页 [打印本页]

作者: 我是楠楠    时间: 2019-4-22 10:11
标题: 【郑州校区】Lucene的高级使用之分页
【郑州校区】Lucene的高级使用之分页
物理分页:limit
逻辑分页:代码
[AppleScript] 纯文本查看 复制代码
// 分页
        @Test
        public void testPageQuery() throws Exception {
                // 实际上Lucene本身不支持分页。因此我们需要自己进行逻辑分页。我们要准备分页参数:
                int pageSize = 2;// 每页条数
                int pageNum = 3;// 当前页码
                int start = (pageNum - 1) * pageSize;// 当前页的起始条数
                int end = start + pageSize;// 当前页的结束条数(不能包含)
               
                // 目录对象
                Directory directory = FSDirectory.open(new File("indexDir"));
                // 创建读取工具
                IndexReader reader = DirectoryReader.open(directory);
                // 创建搜索工具
                IndexSearcher searcher = new IndexSearcher(reader);
               
                QueryParser parser = new QueryParser("title", new IKAnalyzer());
                Query query = parser.parse("谷歌地图");
               
                // 创建排序对象,需要排序字段SortField,参数:字段的名称、字段的类型、是否反转如果是false,升序。true降序
                Sort sort = new Sort(new SortField("id", Type.LONG, false));
                // 搜索数据,查询0~end条
                TopDocs topDocs = searcher.search(query, end,sort);
                System.out.println("本次搜索共" + topDocs.totalHits + "条数据");
               
                ScoreDoc[] scoreDocs = topDocs.scoreDocs;
                for (int i = start; i < end; i++) {
                        ScoreDoc scoreDoc = scoreDocs;
                        // 获取文档编号
                        int docID = scoreDoc.doc;
                        Document doc = reader.document(docID);
                        System.out.println("id: " + doc.get("id"));
                        System.out.println("title: " + doc.get("title"));
                }
        }
传智播客·黑马程序员郑州校区地址
河南省郑州市 高新区长椿路11号大学科技园(西区)东门8号楼三层
联系电话 0371-56061160/61/62
来校路线  地铁一号线梧桐街站A口出






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2