【删除索引】
1 /**
2 * 测试删除索引
3 */
4 @Test
5 public void testDelete(){
6 IndexWriter writer = null;
7
8 try {
9 //1、创建Directory
10 Directory directory = FSDirectory.open(new File("E:\lucene\index2"));
11
12 //2、创建Writer
13 IndexWriterConfig config = new IndexWriterConfig(Version.LUCENE_35, new StandardAnalyzer(Version.LUCENE_35));
14 writer = new IndexWriter(directory,config);
15
16 //删除文件的索引
17 //删除并不是真的删除,删除的索引信息会被存储到.del(相当于windows的回收站)文件
18 writer.deleteDocuments(new Term("id","2"));
19 } catch (IOException e) {
20 // TODO Auto-generated catch block
21 e.printStackTrace();
22 }
23 finally{
24 if(writer != null){
25 try {
26 writer.close();
27 } catch (CorruptIndexException e) {
28 // TODO Auto-generated catch block
29 e.printStackTrace();
30 } catch (IOException e) {
31 // TODO Auto-generated catch block
32 e.printStackTrace();
33 }
34 }
35 }
36 }
【恢复删除】
【】 1 /**
2 * 恢复删除
3 */
4 @Test
5 public void testUnDelete(){
6 IndexReader reader = null;
7
8 try {
9 //1、创建Directory
10 Directory directory = FSDirectory.open(new File("E:\lucene\index2"));
11
12 //2、创建IndexReader
13 //默认情况下是只读的,如果执行恢复操作,Reader必须设置为false
14 reader = IndexReader.open(directory, false);
15
16
17 //恢复所有删除
18 reader.undeleteAll();
19 } catch (IOException e) {
20 // TODO Auto-generated catch block
21 e.printStackTrace();
22 }
23 finally{
24 if(reader != null){
25 try {
26 reader.close();
27 } catch (IOException e) {
28 // TODO Auto-generated catch block
29 e.printStackTrace();
30 }
31 }
32 }
33 }
【完全删除索引】
1 /**
2 * 完全删除索引
3 * forceMergeDeletes()方法是对已经执行deleteDocuments()的索引进行删除
4 * 完全删除是不可恢复的
5 */
6 @Test
7 public void testForceMergeDeletes(){
8 IndexWriter writer = null;
9
10 try {
11 //1、创建Directory
12 Directory directory =FSDirectory.open(new File("E:\lucene\index2"));
13
14 //2、创建IndexWriter
15 IndexWriterConfig config = new IndexWriterConfig(Version.LUCENE_35, new StandardAnalyzer(Version.LUCENE_35));
16 writer = new IndexWriter(directory,config);
17
18 //删除索引
19 //lucene3.5之前使用optimize()方法进行索引的删除
20 //lucene3.5之后使用forceMergeDeletes()
21 writer.forceMergeDeletes();
22
23 } catch (IOException e) {
24 // TODO Auto-generated catch block
25 e.printStackTrace();
26 }
27 finally{
28 if(writer != null)
29 try {
30 writer.close();
31 } catch (CorruptIndexException e) {
32 // TODO Auto-generated catch block
33 e.printStackTrace();
34 } catch (IOException e) {
35 // TODO Auto-generated catch block
36 e.printStackTrace();
37 }
38 }
39 }
【合并索引】
1 /**
2 * 合并索引
3 * 合并索引一般不用手动操作。Lucene会自动执行索引的管理工作
4 */
5 @Test
6 public void testForceMerge(){
7 IndexWriter writer=null;
8
9 try {
10 //1、创建Dierecotry对象
11 Directory directory = FSDirectory.open(new File("E:\lucene\index2"));
12
13 //2、创建Writer对象
14 IndexWriterConfig config = new IndexWriterConfig(Version.LUCENE_35, new StandardAnalyzer(Version.LUCENE_35));
15 writer = new IndexWriter(directory,config);
16
17 //合并索引
18 writer.forceMerge(1);
19 } catch (IOException e) {
20 // TODO Auto-generated catch block
21 e.printStackTrace();
22 }
23 finally{
24 if(writer != null)
25 try {
26 writer.close();
27 } catch (CorruptIndexException e) {
28 // TODO Auto-generated catch block
29 e.printStackTrace();
30 } catch (IOException e) {
31 // TODO Auto-generated catch block
32 e.printStackTrace();
33 }
34 }
35 }
【更新索引】
1 /**
2 * 更新索引
3 */
4 @Test
5 public void testUpdateDocument(){
6 IndexWriter writer = null;
7
8 try {
9 //1、创建Directory对象
10 Directory directory = FSDirectory.open(new File("E:\lucene\index2"));
11
12 //2、创建Writer对象
13 IndexWriterConfig config = new IndexWriterConfig(Version.LUCENE_35, new StandardAnalyzer(Version.LUCENE_35));
14 writer = new IndexWriter(directory,config);
15
16 //修改指定Document的内容
17 Document doc = new Document();
18 doc.add(new Field("id","1",Field.Store.YES,Field.Index.NOT_ANALYZED_NO_NORMS));
19 doc.add(new Field("title","Are you ok",Field.Store.YES,Field.Index.NOT_ANALYZED));
20 doc.add(new Field("author","Mike",Field.Store.YES,Field.Index.NOT_ANALYZED));
21 doc.add(new Field("content", "Hello EveryOne, Are you ok? good",Field.Store.NO,Field.Index.ANALYZED));
22
23 writer.updateDocument(new Term("id","1"), doc);
24 } catch (IOException e) {
25 // TODO Auto-generated catch block
26 e.printStackTrace();
27 }
28 finally{
29 if(writer != null)
30 try {
31 writer.close();
32 } catch (CorruptIndexException e) {
33 // TODO Auto-generated catch block
34 e.printStackTrace();
35 } catch (IOException e) {
36 // TODO Auto-generated catch block
37 e.printStackTrace();
38 }
39 }
40 }