lucene4.0简单实例

IKAnalyzer2012FF_u1.jar-lucene4.0简单实例

1 import java.io.File; 2 import java.io.IOException; 3 import java.io.StringReader; 4 5 import org.apache.lucene.analysis.Analyzer; 6 import org.apache.lucene.analysis.TokenStream; 7 import org.apache.lucene.document.Document; 8 import org.apache.lucene.document.TextField; 9 import org.apache.lucene.document.Field.Store; 10 import org.apache.lucene.index.IndexReader; 11 import org.apache.lucene.index.IndexWriter; 12 import org.apache.lucene.index.IndexWriterConfig; 13 import org.apache.lucene.queryparser.classic.MultiFieldQueryParser; 14 import org.apache.lucene.queryparser.classic.ParseException; 15 import org.apache.lucene.queryparser.classic.QueryParser; 16 import org.apache.lucene.search.IndexSearcher; 17 import org.apache.lucene.search.Query; 18 import org.apache.lucene.search.ScoreDoc; 19 import org.apache.lucene.search.TopDocs; 20 import org.apache.lucene.search.TopScoreDocCollector; 21 import org.apache.lucene.search.highlight.Highlighter; 22 import org.apache.lucene.search.highlight.InvalidTokenOffsetsException; 23 import org.apache.lucene.search.highlight.QueryScorer; 24 import org.apache.lucene.search.highlight.SimpleHTMLFormatter; 25 import org.apache.lucene.store.Directory; 26 import org.apache.lucene.store.FSDirectory; 27 import org.apache.lucene.util.Version; 28 import org.wltea.analyzer.lucene.IKAnalyzer; IndexTools { 31/** 32 * 获得indexwriter对象 33 * 34 * @param dir 35 * @return 36 * @throws IOException 37 * @throws Exception IndexWriter getIndexWriter(Directory dir, Analyzer analyzer) throws IOException { 40IndexWriterConfig iwc = new IndexWriterConfig(Version.LUCENE_40, analyzer); IndexWriter(dir, iwc); 42 }* 45 * 关闭indexwriter对象 46 * 47 * @throws IOException 48 * 49 * @throws Exception closeWriter(IndexWriter indexWriter) throws IOException { 52if (indexWriter != null) { 53 indexWriter.close(); 54 } 55 }* 58 * 创建索引 59 * 60 * @throws InvalidTokenOffsetsException createIndex() throws InvalidTokenOffsetsException {; // 建立索引文件的目录Analyzer analyzer = new IKAnalyzer(true); 66IndexWriter indexWriter = null; 67Directory directory = null; 68try { 69directory = FSDirectory.open(new File(indexPath)); 70indexWriter = getIndexWriter(directory, analyzer); 71} catch (Exception e) {); 73 } { 76Document document = new Document();, , Store.YES));, , Store.YES)); 79 indexWriter.addDocument(document); 80Document document1 = new Document();, , Store.YES));, , Store.YES)); 83 indexWriter.addDocument(document1); 84 indexWriter.commit(); 85} catch (IOException e1) {); 87 } 88try { 89 closeWriter(indexWriter); 90} catch (Exception e) {); 92 } 93 }* 96 * 搜索 97 * 98 * @throws ParseException 99 * @throws IOException100 * @throws InvalidTokenOffsetsException@SuppressWarnings() searchIndex() throws ParseException, IOException, InvalidTokenOffsetsException {; // 建立索引文件的目录Analyzer analyzer = new IKAnalyzer(true);107Directory directory = null;108try {109directory = FSDirectory.open(new File(indexPath));110} catch (Exception e) {);112 }113IndexReader ireader = null;114IndexSearcher isearcher = null;115try {116ireader = IndexReader.open(directory);117} catch (IOException e) {);119 }120isearcher = new IndexSearcher(ireader);;122// 使用QueryParser查询分析器构造Query对象123// eg:单个字段查询124// String fieldName = “content”;String[] fields = { , };127QueryParser qp = new MultiFieldQueryParser(Version.LUCENE_40, fields, analyzer);128 qp.setDefaultOperator(QueryParser.AND_OPERATOR);129Query query = qp.parse(keyword);TopDocs topDocs = isearcher.search(query, 25);+ topDocs.totalHits);ScoreDoc[] scoreDocs = topDocs.scoreDocs;135for (int i = 0; i < topDocs.totalHits; i++) {136Document targetDoc = isearcher.doc(scoreDocs[i].doc);+ targetDoc.toString());138 }higherIndex(analyzer, isearcher, query, topDocs);141 } main(String[] args) {144IndexTools tool = new IndexTools();145try {146 tool.searchIndex();147} catch (ParseException e) {);149} catch (IOException e) {);151} catch (InvalidTokenOffsetsException e) {);153 }154 }*157 * 分页,香港服务器,高亮显示158 * 159 * @param analyzer160 * @param isearcher161 * @param query162 * @param topDocs163 * @throws IOException164 * @throws InvalidTokenOffsetsException higherIndex(Analyzer analyzer, IndexSearcher isearcher, Query query, TopDocs topDocs)167 throws IOException, InvalidTokenOffsetsException {168TopScoreDocCollector results = TopScoreDocCollector.create(topDocs.totalHits, false);169 isearcher.search(query, results);ScoreDoc[] docs = results.topDocs(1, 2).scoreDocs;172for (int i = 0; i < docs.length; i++) {173Document targetDoc = isearcher.doc(docs[i].doc);+ targetDoc.toString());175 }SimpleHTMLFormatter simpleHTMLFormatter = , );178Highlighter highlighter = new Highlighter(simpleHTMLFormatter, new QueryScorer(query));179for (int i = 0; i < docs.length; i++) {180Document doc = isearcher.doc(docs[i].doc);TokenStream tokenStream1 = analyzer.tokenStream(, )));));TokenStream tokenStream2 = analyzer.tokenStream(, )));));) + + title + + content);188 }189 }190 }

posted on

,虚拟主机,香港虚拟主机梦想,并不奢侈,只要勇敢地迈出第一步。

lucene4.0简单实例

相关文章:

你感兴趣的文章:

标签云: