lucene4.0简单API使用

来源:互联网 发布:bong2p手环软件 编辑:程序博客网 时间:2024/05/21 18:49
package test;


import java.io.IOException;


import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.document.FieldType;
import org.apache.lucene.index.DirectoryReader;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriterConfig;
import org.apache.lucene.index.IndexWriterConfig.OpenMode;
import org.apache.lucene.index.Term;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.ScoreDoc;
import org.apache.lucene.search.TermQuery;
import org.apache.lucene.search.TopDocs;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.RAMDirectory;
import org.apache.lucene.util.Version;


public class Lucene4ApiText {
 public static final FieldType TYPE_NOT_STORED = new FieldType();

 public static final FieldType TYPE_STORED = new FieldType();

 static {
   TYPE_NOT_STORED.setIndexed(true);
   TYPE_NOT_STORED.setTokenized(true);
   TYPE_NOT_STORED.freeze();

   TYPE_STORED.setIndexed(true);
   TYPE_STORED.setTokenized(true);
   TYPE_STORED.setStored(true);
   TYPE_STORED.freeze();
 }
public static void main(String[] args) throws IOException {
//索引
Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_40);
Directory dir = new RAMDirectory();
IndexWriterConfig iwc = new IndexWriterConfig(Version.LUCENE_40,
analyzer);
iwc.setOpenMode(OpenMode.CREATE);
IndexWriter writer = new IndexWriter(dir, iwc);
for(int i=0;i<10;i++){
Document document = new Document();
document.add(new Field("content","索引"+i,TYPE_STORED));
writer.addDocument(document);
}
writer.close();
//搜索
IndexReader reader = DirectoryReader.open(dir);
IndexSearcher searcher = new IndexSearcher(reader);
try {
Query query = new TermQuery(new Term("content", "索"));
TopDocs topDocs = searcher.search(query, 10);
int total = topDocs.totalHits;
System.out.println("total=" + total);
for(ScoreDoc doc : topDocs.scoreDocs){
int i = doc.doc;
Document docu = searcher.doc(i);
System.out.println(docu.get("content"));
}
} finally {
System.out.println("end");
}

}


}