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 ; 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\")); } } } 因篇幅问题不能全部显示,请点此查看更多更全内容