lucene4.0入门实例

1:以前用3.5的时候,到现在也差不多忘了,重新看了下文档,写个简单的例子

 

lucene4.0中有很多新的东西,其中Field类主要不能new Field()要通过其子类去实现比如new StringField()等,对分词等参数也有部分变化。

 

创建索引的代码如下:

 

  1. package com.search.lucene;  

  2. import java.io.File;  

  3.   

  4. import org.apache.lucene.analysis.Analyzer;  

  5. import org.apache.lucene.analysis.standard.StandardAnalyzer;  

  6. import org.apache.lucene.document.Document;  

  7. import org.apache.lucene.document.Field.Store;  

  8. import org.apache.lucene.document.StringField;  

  9. import org.apache.lucene.document.TextField;  

  10. import org.apache.lucene.index.IndexWriter;  

  11. import org.apache.lucene.index.IndexWriterConfig;  

  12. import org.apache.lucene.store.Directory;  

  13. import org.apache.lucene.store.FSDirectory;  

  14. import org.apache.lucene.util.Version;  

  15. import org.junit.Before;  

  16. import org.junit.Test;  

  17.   

  18. public class IndexFile {  

  19.   

  20.     protected String[] ids={"1""2"};  

  21.   

  22.     protected String[] content={"Amsterdam has lost of add  cancals""i love  add this girl"};  

  23.   

  24.     protected String[] city={"Amsterdam""Venice"};  

  25.   

  26.     private Directory dir;  

  27.   

  28.     /** 

  29.      * 初始添加文档 

  30.      * @throws Exception 

  31.      */  

  32.     @Test   

  33.     public void init() throws Exception {  

  34.         String pathFile="D://lucene/index";  

  35.         dir=FSDirectory.open(new File(pathFile));  

  36.         IndexWriter writer=getWriter();  

  37.         for(int i=0; i < ids.length; i++) {  

  38.             Document doc=new Document();  

  39.             doc.add(new StringField("id", ids[i], Store.YES));  

  40.             doc.add(new TextField("content", content[i], Store.YES));  

  41.             doc.add(new StringField("city", city[i], Store.YES));  

  42.             writer.addDocument(doc);  

  43.         }  

  44.         System.out.println("init ok?");  

  45.         writer.close();  

  46.     }  

  47.   

  48.     /** 

  49.      * 获得IndexWriter对象 

  50.      * @return  

  51.      * @throws Exception 

  52.      */  

  53.     public IndexWriter getWriter() throws Exception {  

  54.         Analyzer analyzer=new StandardAnalyzer(Version.LUCENE_40);  

  55.         IndexWriterConfig iwc=new IndexWriterConfig(Version.LUCENE_40, analyzer);  

  56.         return new IndexWriter(dir, iwc);  

  57.     }  

  58.   

  59. }  

 说明下:lucene4.0中有核心包和其他包:我导入


 

 

Java代码 

  1. package com.search.lucene;  

  2.   

  3. import java.io.File;  

  4.   

  5. import org.apache.lucene.document.Document;  

  6. import org.apache.lucene.index.DirectoryReader;  

  7. import org.apache.lucene.index.IndexReader;  

  8. import org.apache.lucene.index.Term;  

  9. import org.apache.lucene.search.IndexSearcher;  

  10. import org.apache.lucene.search.ScoreDoc;  

  11. import org.apache.lucene.search.TermQuery;  

  12. import org.apache.lucene.search.TopDocs;  

  13. import org.apache.lucene.store.Directory;  

  14. import org.apache.lucene.store.FSDirectory;  

  15. import org.junit.Test;  

  16.   

  17. public class IndexSearch {  

  18.   

  19.     /** 

  20.      * 查询 

  21.      * @throws Exception 

  22.      */  

  23.     @Test  

  24.     public void search() throws Exception {  

  25.         String filePath="D://lucene/index";  

  26.         Directory dir=FSDirectory.open(new File(filePath));  

  27.         IndexReader reader=DirectoryReader.open(dir);  

  28.         IndexSearcher searcher=new IndexSearcher(reader);  

  29.         Term term=new Term("content""add");  

  30.         TermQuery query=new TermQuery(term);  

  31.         TopDocs topdocs=searcher.search(query, 5);  

  32.         ScoreDoc[] scoreDocs=topdocs.scoreDocs;  

  33.         System.out.println("查询结果总数---" + topdocs.totalHits+"最大的评分--"+topdocs.getMaxScore());  

  34.         for(int i=0; i < scoreDocs.length; i++) {  

  35.             int doc = scoreDocs[i].doc;  

  36.             Document document = searcher.doc(doc);  

  37.             System.out.println("content===="+document.get("content"));  

  38.             System.out.println("id--" + scoreDocs[i].doc + "---scors--" + scoreDocs[i].score+"---index--"+scoreDocs[i].shardIndex);  

  39.         }  

  40.         reader.close();  

  41.     }  

  42. }  

 

  result:

  查询结果总数---2最大的评分--0.2972674

  1. content====i love  add this girl  

  2. id--1---scors--0.2972674---index---1  

  3. content====Amsterdam has lost of add  cancals  

  4. id--0---scors--0.26010898---index---1  

你可能感兴趣的:(lucene4.0入门实例)