搜索
您的当前位置:首页正文

Lucene3.5实例

来源:知库网
package Main;

import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; import java.io.File; import java.util.Date;

import org.apache.lucene.analysis.Analyzer; import org.apache.lucene.document.Document; import org.apache.lucene.document.Field.Store; import org.apache.lucene.index.IndexReader; import org.apache.lucene.index.IndexWriter; import org.apache.lucene.document.Field;

import org.apache.lucene.index.IndexWriterConfig;

import org.apache.lucene.index.IndexWriterConfig.OpenMode; import org.apache.lucene.queryParser.MultiFieldQueryParser; import org.apache.lucene.queryParser.QueryParser; import org.apache.lucene.search.IndexSearcher; import org.apache.lucene.search.Query; import org.apache.lucene.search.ScoreDoc; import org.apache.lucene.search.TopDocs;

import org.apache.lucene.search.TopScoreDocCollector; import org.apache.lucene.store.FSDirectory; import org.apache.lucene.util.Version; import org.wltea.analyzer.lucene.IKAnalyzer; //使用IK分词器 Lucene3.5 //AUTOR 董浩

//Date 2012-3-12

publicclass test_index {

privatestatic Analyzer luceneAnalyzer = new IKAnalyzer(); // private static Directory indexDir = new RAMDirectory(); //private static Directory indexDir; static String indexpath=\"E://index\";

publicstaticvoid main(String[] args) throws Exception {

create(); search(); }

IndexWriterConfig config =

publicstaticvoid create() throws Exception{ //createIndex

newIndexWriterConfig(Version.LUCENE_35,luceneAnalyzer);

config.setOpenMode(OpenMode.CREATE);

IndexWriter indexWriter = new IndexWriter(FSDirectory.open(new

BufferedReader reader = null; try {

File file = new File(\"e://files//AAA.txt\");

reader = new BufferedReader(new FileReader(file)); String tempString = null; int line = 1 ;

System.out.println(\"创建索引开始.....\"); Date d1 = new Date();

while((tempString = reader.readLine()) != null) {

Document doc1 = new Document(); doc1.add(new doc1.add(new

indexWriter.addDocument(doc1);

System.out.println(\"已创建【\" + line+ \"】行\"); line ++;

File(indexpath)),config);

Field(\"id\",\"\"+line,Store.YES,Field.Index.ANALYZED));

Field(\"content\",tempString,Store.YES,Field.Index.ANALYZED));

}

Date d2 = new Date();

System.out.println(\"创建索引完成!\\n\");

System.out.println(\"创建索引耗时:\" + (d2.getTime()-d1.getTime()) +\"ms\");

reader.close();

System.out.println(\"Read Error!\"); }catch (IOException e) { }

indexWriter.close(); }

String queryString = \"test1\";

String[] fields = {\"id\",\"content\"}; QueryParser queryParser = new

Query query = queryParser.parse(queryString); IndexReader reader = IndexReader.open(FSDirectory.open(new //IndexReader reader = IndexReader.open(indexDir);

IndexSearcher searcher = new IndexSearcher(reader); TopScoreDocCollector results = TopScoreDocCollector.create(10,

publicstaticvoid search() throws Exception{

MultiFieldQueryParser(Version.LUCENE_35, fields, luceneAnalyzer);

File(indexpath)));

false);

Date dt1 = new Date();

System.out.println(\"开始查询时间:\" +dt1.getTime()); System.out.println(\"查询关键字 : \"+ queryString); searcher.search(query, results); Date dt2 = new Date();

System.out.println(\"结束查询时间:\" +dt2.getTime()); System.out.println();

System.out.println(\"查询耗时:\" + (dt2.getTime()-dt1.getTime()) + \"ms\"); 录

System.out.println(\"命中数: \" + topDocs.totalHits); for(int j=0 ; jScoreDoc scoreDoc = topDocs.scoreDocs[j];

Document doc = searcher.doc(scoreDoc.doc); System.out.println(\"第 \"+ doc.get(\"id\") +\" 行\");

TopDocs topDocs = results.topDocs(0, 10); //显示查询结果前10条记

System.out.println(\"内容: \" + doc.get(\"content\")); } }

}

因篇幅问题不能全部显示,请点此查看更多更全内容

Top