</pre><pre name="code" class="cpp">package com.lin.lucene; import java.io.File; import java.io.IOException; import org.apache.lucene.document.Document; import org.apache.lucene.index.IndexReader; import org.apache.lucene.queryparser.classic.ParseException; import org.apache.lucene.queryparser.classic.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.store.Directory; import org.apache.lucene.store.FSDirectory; import org.apache.lucene.util.Version; import org.wltea.analyzer.lucene.IKAnalyzer; public class Searcher { private IndexReader reader; public void search(String indexDir, String q) throws IOException, ParseException { Directory dir = FSDirectory.open(new File(indexDir)); IndexSearcher is = new IndexSearcher(reader.open(dir)); QueryParser parser = new QueryParser(Version.LUCENE_4_10_2, "contents", new IKAnalyzer()); Query query = parser.parse(q); long start = System.currentTimeMillis(); TopDocs hits = is.search(query, 10); long end = System.currentTimeMillis(); System.out.println("Found " + hits.totalHits + " document(s) (in " + (end - start) + "milliseconds ) that matched query :'" + q + "':"); for (ScoreDoc scoreDoc : hits.scoreDocs) { Document doc = is.doc(scoreDoc.doc); System.out.println(doc.get("fullpath")); } } public static void main(String[] args) throws IOException, ParseException { new Searcher().search("d:\\index", "hackcoder"); } }
时间: 2024-10-13 20:47:27