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

lucene3.6札记添加搜索功能

2013-08-01 
lucene3.6笔记添加搜索功能??????? lucene为程序添加搜索功能,此功能基于已创建好的文档的索引之上。这里我

lucene3.6笔记添加搜索功能

??????? lucene为程序添加搜索功能,此功能基于已创建好的文档的索引之上。这里我已经为一些文档建立了索引,并保存到硬盘上。下面开始针对这些索引,添加搜索功能。

?


/** * 【近实时搜索】 * * @throws Exception */public void testNRTsearch() throws Exception{Directory 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);}IndexReader reader=writer.getReader();IndexSearcher searcher=new IndexSearcher(reader);Query query=new TermQuery(new Term("text","aaa"));TopDocs docs=searcher.search(query, 1);System.out.println("[搜索的总数]"+docs.totalHits);//先删除id为7的文档,然后添加一个id为22的文档,进行搜索,看是不是近实时的writer.deleteDocuments(new Term("id","7"));Document doc=new Document();doc.add(new Field("id", "22", Field.Store.NO, Field.Index.NOT_ANALYZED_NO_NORMS));doc.add(new Field("text","bbb",Field.Store.NO,Field.Index.ANALYZED));writer.addDocument(doc);//重启reader,然后搜索IndexReader newReader=reader.reopen();assertEquals(reader==newReader,false);reader.close();searcher=new IndexSearcher(newReader); TopDocs hits=searcher.search(query, 10);assertEquals(9, hits.totalHits);query=new TermQuery(new Term("text","bbb"));hits=searcher.search(query, 10);System.out.println("bbb文档的个数:"+hits.totalHits);//关闭资源newReader.close();writer.close();}

?

?

?

热点排行