1. 功能四:索引库的维护
1.1. 索引库的添加
1.1.1. 步骤
向索引库中添加document对象。
第一步:先创建一个indexwriter对象
第二步:创建一个document对象
第三步:把document对象写入索引库
第四步:关闭indexwriter。
1.1.2. 代码实现
//添加索引 @Test public void addDocument()throws Exception { 1//索引库存放路径 Directory directory = FSDirectory.open(new File("D:\\temp\\0108\\index")); 2//indexWriter的配置 IndexWriterConfig config =new IndexWriterConfig(Version.LATEST,new IKAnalyzer()); 3//创建一个indexwriter对象 IndexWriter indexWriter = new IndexWriter(directory, config); 4//创建一个Document对象 Document document = new Document(); //向document对象中添加域。 5//不同的document可以有不同的域,同一个document可以有相同的域。 document.add(new TextField("filename","新添加的文档", Store.YES)); document.add(new TextField("content","新添加的文档的内容", Store.NO)); document.add(new TextField("content","新添加的文档的内容第二个content", Store.YES)); document.add(new TextField("content1","新添加的文档的内容要能看到", Store.YES)); 6//添加文档到索引库 indexWriter.addDocument(document); 7//关闭indexwriter indexWriter.close(); } |
1.2. 索引库删除
1.2.1. 删除全部
//删除全部索引 @Test public void deleteAllIndex()throws Exception { IndexWriter indexWriter = getIndexWriter(); //删除全部索引 indexWriter.deleteAll(); //关闭indexwriter indexWriter.close(); } |
说明:将索引目录的索引信息全部删除,直接彻底删除,无法恢复。此方法慎用!!
1.2.2. 指定查询条件删除
//根据查询条件删除索引 @Test public void deleteIndexByQuery()throws Exception { IndexWriter indexWriter = getIndexWriter(); //创建一个查询条件 第一个参数是域名称,第二个是条件 Query query = new TermQuery(new Term("filename","apache")); //根据查询条件删除 indexWriter.deleteDocuments(query); //关闭indexwriter indexWriter.close(); } |
1.3. 索引库的修改
原理就是先删除后添加。
//修改索引库 @Test public void updateIndex()throws Exception { IndexWriter indexWriter = getIndexWriter(); //创建一个Document对象 Document document = new Document(); //向document对象中添加域。 //不同的document可以有不同的域,同一个document可以有相同的域。 document.add(new TextField("filename","要更新的文档", Store.YES)); document.add(new TextField("content","2013年11月18日 - Lucene 简介 Lucene 是一个基于 Java 的全文信息检索工具包,它不是一个完整的搜索应用程序,而是为你的应用程序提供索引和搜索功能。", Store.YES)); indexWriter.updateDocument(new Term("content","java"), document); //关闭indexWriter indexWriter.close(); } |