Lucene之查询索引入门级实例

一、需要查询的索引目标文件

二、查询结果 

三、IndexSearcher搜索方法

方法

说明

indexSearcher.search(query, n)

根据Query搜索,返回评分最高的n条记录

indexSearcher.search(query, filter, n)

根据Query搜索,添加过滤策略,返回评分最高的n条记录

indexSearcher.search(query, n, sort)

根据Query搜索,添加排序策略,返回评分最高的n条记录

indexSearcher.search(booleanQuery, filter, n, sort)

根据Query搜索,添加过滤策略,添加排序策略,返回评分最高的n条记录

四、代码

1.第一步:创建一个Directory对象,指定索引库存放的位置

2.第二步:创建一个IndexReader对象,需要指定Directory对象

3.第三步:创建一个IndexSearcher对象,需要指定IndexReader对象

4.第四步:创建一个Query的子类对象,指定查询的域和查询的关键词

5.第五步:执行查询

6.第六步:返回查询结果,遍历查询结果并输出

7.第七步:关闭IndexReader对象

    @Test
    public void testSearchIndex() throws Exception{

        //第一步:创建一个Directory对象,指定索引库存放的磁盘位置
        Directory directory = FSDirectory.open(new File("D:\\长期数据\\index"));
        //第二步:创建一个IndexReader对象,需要指定Directory对象,打开索引库
        IndexReader indexReader = DirectoryReader.open(directory);

        //第三步:创建一个IndexSearcher对象,需要指定IndexReader对象
        IndexSearcher indexSearcher = new IndexSearcher(indexReader);
        //第四步:创建一个TermQuery对象,指定查询的域和查询的关键词
        Query query = new TermQuery(new Term("fileContent","spring"));
        //第五步:执行查询
        TopDocs topDocs = indexSearcher.search(query, 5);
        //第六步:返回查询结果,遍历查询结果并输出
        ScoreDoc[] scoreDocs = topDocs.scoreDocs;
        for (ScoreDoc oneDoc : scoreDocs){
            //每一个文档的ID
            int doc = oneDoc.doc;
            //根据文档ID,搜索具体文档
            Document docment = indexSearcher.doc(doc);
            //获取文档信息
            System.out.println("------------文档打印开始------------");
            String fileName = docment.get("fileName");
            System.out.println(fileName);
            String filePath = docment.get("filePath");
            System.out.println(filePath);
            String fileSize = docment.get("fileSize");
            System.out.println(fileSize);
            String fileContent = docment.get("fileContent");
            System.out.println(fileContent);
            System.out.println("------------文档打印结束------------");
            System.out.println();
        }
        //关闭IndexReader对象
        indexReader.close();
    }

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值