Lucene--002创建搜索

本文介绍了一个基于Lucene的搜索实现案例,详细展示了如何通过Lucene进行文档搜索的过程,包括创建Directory、IndexReader、IndexSearcher,构建Query并执行搜索获取结果。
具体步骤:
1  创建Directory
2  创建IndexReader
3  根据IndexReader创建IndexSearcher
4  创建搜索的Query
5  根据searcher搜索并且返回TopDocs
6  根据TopDocs获取ScoreDoce对象
7  根据searcher和ScoreDoc对象获取具体的Document对象
8  根据Document对象获取需要的值

public void searcher(){

      try {
          //1  创建Directory
          Directory directory = FSDirectory.open(new File("d:/lucene/index01"));
          //2  创建IndexReader
          IndexReader reader =IndexReader.open(directory);
          //3  根据IndexReader创建IndexSearcher
          IndexSearcher indexSearcher=new IndexSearcher(reader);
          //4  创建搜索的Query
          //创建parser来确定要搜索文件的内容,第二个参数表示要搜索的域
          QueryParser queryParser= new QueryParser(Version.LUCENE_35,"content",new StandardAnalyzer(Version.LUCENE_35));
          //创建query,表示搜索域为content中包含java的文档
          Query query = queryParser.parse("java"); //搜索包含java的文件
          //5  根据searcher搜索并且返回TopDocs
          TopDocs tds =indexSearcher.search(query,10); //搜索10条
          //6  根据TopDocs获取ScoreDoce对象
          ScoreDoc[] sds = tds.scoreDocs;
          for(ScoreDoc sd:sds){
              //7   根据searcher和ScoreDoc对象获取具体的Document对象
              Document d=indexSearcher.doc(sd.doc);
              //8   根据Document对象获取需要的值
              System.out.println(d.get("filename")+"["+d.get("path"));
          }
          //9 关闭reader
          reader.clone();
      } catch (IOException e) {
          e.printStackTrace();
      } catch (ParseException e) {
          e.printStackTrace();
      }

  }
测试:
@Test
    public  void  testSearch(){
        HelloLucene h1= new HelloLucene();
        h1.searcher();
    }



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值