首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

lucene入门代码3(near-real-time)

2012-08-27 
lucene入门代码三(near-real-time)一个简单的接近实时搜索的例子源自(Lucene inaiction)package com.yale.

lucene入门代码三(near-real-time)
一个简单的接近实时搜索的例子源自(Lucene in  aiction)

package com.yale.lucene;import org.apache.lucene.analysis.standard.StandardAnalyzer;import org.apache.lucene.document.Document;import org.apache.lucene.document.Field;import org.apache.lucene.index.IndexReader;import org.apache.lucene.index.IndexWriter;import org.apache.lucene.index.Term;import org.apache.lucene.search.IndexSearcher;import org.apache.lucene.search.Query;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 NearRealTimeTest{public static void main(String[] args) throws Exception{// Create RAMDirectoryDirectory dir = new RAMDirectory();IndexWriter writer = new IndexWriter(dir, new StandardAnalyzer(Version.LUCENE_30), IndexWriter.MaxFieldLength.UNLIMITED);for(int i =0;i<10;i++){Document doc = new Document();doc.add(new Field("id",""+i,Field.Store.NO,Field.Index.NOT_ANALYZED_NO_NORMS));doc.add(new Field("text","aaa",Field.Store.NO,Field.Index.ANALYZED));writer.addDocument(doc);}//Create near-real-time readerIndexReader reader = writer.getReader();//Warp reader in  IndexSearcherIndexSearcher searcher = new IndexSearcher(reader);Query query = new TermQuery(new Term("text","aaa"));TopDocs docs = searcher.search(query,1);//Search returns 10 hitsSystem.out.println("匹配结果:"+docs.totalHits+"次");//delete 1 documentwriter.deleteDocuments(new Term("id","7"));//add 1 documentDocument doc = new Document();doc.add(new Field("id","11",Field.Store.NO,Field.Index.NOT_ANALYZED_NO_NORMS));doc.add(new Field("text","bbb",Field.Store.NO,Field.Index.ANALYZED));writer.addDocument(doc);//Reopen readerIndexReader newReader = reader.reopen(); //Confirm reader is newSystem.out.println(reader==newReader);reader.close();searcher = new IndexSearcher(newReader);TopDocs hits = searcher.search(query,10);//Search returns 9 hitsSystem.out.println("匹配结果:"+hits.totalHits+"次");query = new TermQuery(new Term("text", "bbb"));hits = searcher.search(query, 1);//Search returns 1 hitsSystem.out.println("匹配结果:"+hits.totalHits+"次");newReader.close();writer.close();}}

热点排行