Lucene搜索引擎入门写法

需要的jar包: 本文采用 lucene4.10.2 最好采用JDK1.7以上的版本进行测试。

  1. .<dependency>  
  2.         <groupId>org.apache.lucene</groupId>  
  3.         <artifactId>lucene-core</artifactId>  
  4.         <version>${lucene-version}</version>  
  5.     </dependency>  
  6.       
  7.     <dependency>  
  8.         <groupId>org.apache.lucene</groupId>  
  9.         <artifactId>lucene-analyzers-common</artifactId>  
  10.         <version>${lucene-version}</version>  
  11.     </dependency>  
  12.   
  13.   
  14.     <dependency>  
  15.         <groupId>org.apache.lucene</groupId>  
  16.         <artifactId>lucene-queryparser</artifactId>  
  17.         <version>${lucene-version}</version>  
  18.     </dependency>  


其中: <lucene-version>4.10.2</lucene-version>


入门代码:
  1. package com.power.lencene;  
  2.   
  3. import java.io.File;  
  4.   
  5. import org.apache.lucene.analysis.Analyzer;  
  6. import org.apache.lucene.analysis.standard.StandardAnalyzer;  
  7. import org.apache.lucene.document.Document;  
  8. import org.apache.lucene.document.Field;  
  9. import org.apache.lucene.document.FieldType;  
  10. import org.apache.lucene.index.DirectoryReader;  
  11. import org.apache.lucene.index.IndexReader;  
  12. import org.apache.lucene.index.IndexWriter;  
  13. import org.apache.lucene.index.IndexWriterConfig;  
  14. import org.apache.lucene.queryparser.classic.MultiFieldQueryParser;  
  15. import org.apache.lucene.queryparser.classic.QueryParser;  
  16. import org.apache.lucene.search.IndexSearcher;  
  17. import org.apache.lucene.search.Query;  
  18. import org.apache.lucene.search.ScoreDoc;  
  19. import org.apache.lucene.search.Sort;  
  20. import org.apache.lucene.search.TopDocs;  
  21. import org.apache.lucene.store.Directory;  
  22. import org.apache.lucene.store.FSDirectory;  
  23. import org.apache.lucene.util.Version;  
  24.   
  25. /* 作者Gary Huang 博客地址 :http://blog.csdn.net/hfmbook 邮箱:834865081@qq.com**/  
  26. public class LenceneDemo {  
  27.       
  28.     static  String path = "d:/lencene" ;   
  29.       
  30.     public static void main(String[] args) {  
  31.         try {  
  32.             String keyword = "文字Score" ;    
  33.             Analyzer analyzer = new StandardAnalyzer();   
  34.             Directory directory = FSDirectory.open(new File(path)) ;   
  35.             IndexReader indexReader = DirectoryReader.open(directory) ;  
  36.             IndexSearcher indexSearcher = new IndexSearcher(indexReader);  
  37.             QueryParser queryParser = new MultiFieldQueryParser(new String[] {  "content"  },analyzer);    
  38.             Query query = queryParser.parse(keyword);   
  39.             Sort sort = new Sort() ;     
  40.             TopDocs topDocs = indexSearcher.search(query, 5 , sort);   
  41.             ScoreDoc[] scoreDoces = topDocs.scoreDocs;  
  42.             for(ScoreDoc scoreDoc : scoreDoces){  
  43.                 int docID = scoreDoc.doc ;  
  44.                 Document document = indexSearcher.doc(docID);  
  45.                 System.out.println( document.get("id") ) ;    
  46.                 System.out.println( document.get("content") ) ;    
  47.                   
  48.             }  
  49.             indexReader.close();   
  50.         } catch (Exception e) {  
  51.             e.printStackTrace();  
  52.         }  
  53.     }  
  54.       
  55.     public static void writeIndex(){  
  56.         try {  
  57.             Analyzer analyzer = new StandardAnalyzer();   
  58.             IndexWriterConfig indexWriterConfig = new IndexWriterConfig(Version.LATEST, analyzer);  
  59.             Directory directory = FSDirectory.open(new File(path)) ;   
  60.             IndexWriter iwriter = new IndexWriter(directory, indexWriterConfig) ;   
  61.             Document doc = new Document();  
  62.             FieldType fieldType = new FieldType();   
  63.             fieldType.setIndexed(true);  
  64.             fieldType.setStored(true);   
  65.             doc.add(new Field("id""1", fieldType ) ) ;    
  66.             doc.add(new Field("content""Lucene文字这个相关度排序是基于内部的Score和DocID,Score又基于关键词的内部评分和做索引时的boost。默认Score高的排前面,如果Score一样,.”", fieldType));   
  67.             iwriter.addDocument(doc);  
  68.             iwriter.close() ;  
  69.         } catch (Exception e) {  
  70.             e.printStackTrace();  
  71.         }  
  72.     }  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值