1 package com.home.utils;
 2 
 3 import org.apache.lucene.index.IndexWriter;
 4 import org.apache.lucene.index.IndexWriter.MaxFieldLength;
 5 import org.junit.Test;
 6 
 7 public class IndexWriterTest {
 8 
 9     /**
10      * 1、索引库的增、删、改是由indexWriter来操作的
11      * 2、同一个时刻内,同一个索引库,只能允许一个indexWriter操作
12      * 3、当IndexWriter创建完成以后,indexwriter所指向的索引库就被占领了,只有当indexWriter.close时,才能释放锁的资源
13      * 4、当一个新的indexWriter想拥有索引库时,原来的indexWriter必须释放锁
14      * 5、只要索引库中存在write.lock文件,说明上锁了
15      * 6、indexWriter.close有两层含义:
16      *    *  关闭IO资源
17      *    *  释放锁
18      * @author Administrator
19      *
20      */
21     @Test
22     public void testIndexWriter() throws Exception {
23          IndexWriter indexWriter = new IndexWriter(LuceneUtils.directory,LuceneUtils.analyzer,MaxFieldLength.LIMITED);
24          indexWriter.close();//这里不关闭 就不能再次开启indexWriter
25           IndexWriter indexWriter2 = new IndexWriter(LuceneUtils.directory,LuceneUtils.analyzer,MaxFieldLength.LIMITED);
26     }
27 /**
28  * 1.  索引库的优化
29  
30 当执行创建索引多次时,索引库的文件如图所示:(索引里内容是一样的)
31  
32 结论:如果增加、删除反复操作很多次,就会造成文件大量增加,这样检索的速度也会下降,所以我们有必要去优化索引结构。使文件的结构发生改变从而提高效率。
33  * @throws Exception
34  */
35      @Test
36      public void testOptimize() throws Exception{
37       IndexWriter indexWriter = new IndexWriter(LuceneUtils.directory,LuceneUtils.analyzer,MaxFieldLength.LIMITED);
38       indexWriter.optimize();//这个方法 优化
39       indexWriter.close();
40      }
41 }

 

posted on 2016-10-24 03:30  Sharpest  阅读(455)  评论(0)    收藏  举报