开发搜索引擎初步(二)搜索(Lucene实现)

 经过上一篇的经验,想必大家对建立索引应该没有什么问题了,下面我们就开始最简单的搜索,也就是对我们已经建立好的索引进行检索,废话不多说,下面看代码

  1. package com.dreamers.search;  
  2.   
  3. import java.io.File;  
  4. import java.io.IOException;  
  5. import java.util.Date;  
  6.   
  7. import org.apache.lucene.document.Document;  
  8. import org.apache.lucene.index.Term;  
  9. import org.apache.lucene.search.IndexSearcher;  
  10. import org.apache.lucene.search.Query;  
  11. import org.apache.lucene.search.ScoreDoc;  
  12. import org.apache.lucene.search.TermQuery;  
  13. import org.apache.lucene.store.Directory;  
  14. import org.apache.lucene.store.FSDirectory;  
  15.   
  16. public class IndexSearch {  
  17.     private String INDEX_STORE_PATH = "d:\\LuceneDemo";//注意,此处的PATH为你的索引在磁盘中的存放位置   
  18.     public void search(){  
  19.         try{  
  20.             Directory directory = FSDirectory.open(new File(INDEX_STORE_PATH));//建立库,导入索引   
  21.             System.out.println("使用索引搜索");  
  22.             IndexSearcher searcher = new IndexSearcher(directory);//初始化搜索的类,在Lucene中   
  23.             Term t = new Term("publisher","历城二中");//构建搜索初始化元   
  24.             Query q = new TermQuery(t);  
  25.             Date begin = new Date();//建立时间,以便显示搜索用时   
  26.             ScoreDoc[] hits = searcher.search(q,null,1000).scoreDocs;//将搜索到的资源放入数组   
  27.             System.out.println("共找到 " + hits.length + " 个文档符合条件");  
  28.             for (int i = 0; i < hits.length; i++){  
  29.                 Document doc = new Document();//遍历资源   
  30.                 doc = searcher.doc(hits[i].doc);  
  31.                 System.out.print("文件名为: ");  
  32.                 System.out.print(doc.get("title"));  
  33.                 System.out.print(".");  
  34.                 System.out.println(doc.get("kind"));  
  35.                 System.out.print("地址为 : ");  
  36.                 System.out.println(doc.get("url"));  
  37.                 System.out.print("描述: ");  
  38.                 System.out.println(doc.get("describe"));  
  39.                 System.out.print("scores is :");  
  40.                 System.out.println(hits[i].score);  
  41.                 System.out.print("作者为:");  
  42.                 System.out.println(doc.get("author"));  
  43.                 System.out.println("---------------------------------------------------");  
  44.             }  
  45.             Date end = new Date();  
  46.             long time = end.getTime()-begin.getTime();  
  47.             System.out.print("搜索用时 " + time + "ms");  
  48.         }catch(IOException x){  
  49.             x.printStackTrace();  
  50.         }  
  51.     }  
  52.       
  53.     public static void main(String [] args){  
  54.         IndexSearch search = new IndexSearch();  
  55.         search.search();//测试   
  56.     }  
  57.   
  58. }  


通过这个程序,我们可以很简单的实现对自己的在磁盘上面建立的索引文件进行按照自己的想法进行索引,呵呵,下面的工作就是自己去实现了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值