- package org.se.lucene;
- //主类
- import java.io.File;
- import java.io.IOException;
- import org.apache.lucene.analysis.standard.StandardAnalyzer;
- import org.apache.lucene.document.Document;
- import org.apache.lucene.document.Field;
- import org.apache.lucene.index.CorruptIndexException;
- import org.apache.lucene.index.IndexReader;
- import org.apache.lucene.index.IndexWriter;
- import org.apache.lucene.index.IndexWriterConfig;
- import org.apache.lucene.index.Term;
- import org.apache.lucene.store.Directory;
- import org.apache.lucene.store.FSDirectory;
- import org.apache.lucene.store.LockObtainFailedException;
- import org.apache.lucene.util.Version;
- public class lucene_index {
- private String[] ids={"1","2","3","4","5","6"};
- private String[] emails={"aa@aa.org","cc@cc.org","dd@@dd.org","bb@bb.org","ee@ee.org","ff@ff.org"};
- private String[] contents={"welcometotyu","hellowboy","higirl","howareyou","googluck","badgosh"};
- private int[] attachs={1,2,3,4,5,6};
- private String[] names={"liwu","zhangsan","xiaoqinag","laona","dabao","lisi"};
- private Directory directory=null;
- public lucene_index()
- {
- try {
- directory=FSDirectory.open(new File("f:/lucene/index02"));
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- public void quary()
- {
- try {
- IndexReader reader=IndexReader.open(directory);
- System.out.println("numdocs"+reader.numDocs());
- System.out.println("maxDocs"+reader.maxDoc());
- System.out.println("detelemaxDocs"+reader.numDeletedDocs());
- reader.close();
- } catch (CorruptIndexException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- @SuppressWarnings("deprecation")
- public void undelete()
- {
- try {
- //回复时必须把reader的只读设为false
- IndexReader reader=IndexReader.open(directory,false);
- reader.undeleteAll();
- reader.close();
- } catch (CorruptIndexException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- //清空回收站,强制优化
- public void forceDelete()
- {
- IndexWriter writer=null;
- try {
- writer=new IndexWriter(directory, new IndexWriterConfig(Version.LUCENE_36,
- new StandardAnalyzer(Version.LUCENE_36)));
- //参数十一个选项,可以是一个query,也可以是一个term term就是一个精确查找的值
- //此时删除的文档并未完全删除,而是存储在回收站中,可以恢复的
- writer.forceMergeDeletes();
- } catch (CorruptIndexException e) {
- e.printStackTrace();
- } catch (LockObtainFailedException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- }
- finally{
- if (writer!=null) {
- try {
- writer.close();
- } catch (CorruptIndexException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- }
- }
- public void merge()
- {
- IndexWriter writer=null;
- try {
- writer=new IndexWriter(directory, new IndexWriterConfig(Version.LUCENE_36,
- new StandardAnalyzer(Version.LUCENE_36)));
- writer.forceMerge(2);
- } catch (CorruptIndexException e) {
- e.printStackTrace();
- } catch (LockObtainFailedException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- }
- finally{
- if (writer!=null) {
- try {
- writer.close();
- } catch (CorruptIndexException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- }
- }
- public void delete()
- {
- IndexWriter writer=null;
- try {
- writer=new IndexWriter(directory, new IndexWriterConfig(Version.LUCENE_36,
- new StandardAnalyzer(Version.LUCENE_36)));
- //参数十一个选项,可以是一个query,也可以是一个term term就是一个精确查找的值
- //此时删除的文档并未完全删除,而是存储在回收站中,可以恢复的
- writer.deleteDocuments(new Term("id","1"));
- } catch (CorruptIndexException e) {
- e.printStackTrace();
- } catch (LockObtainFailedException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- }
- finally{
- if (writer!=null) {
- try {
- writer.close();
- } catch (CorruptIndexException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- }
- }
- public void index()
- {
- IndexWriter writer=null;
- Document doc=null;
- try {
- writer =new IndexWriter(directory,new IndexWriterConfig(Version.LUCENE_36,
- new StandardAnalyzer(Version.LUCENE_36)));
- //writer.deleteAll();
- for(int i=0;i<ids.length;i++)
- {
- doc=new Document();
- doc.add(new Field("id",ids[i],Field.Store.YES,Field.Index.NOT_ANALYZED_NO_NORMS));
- doc.add(new Field("emails",emails[i],Field.Store.YES,Field.Index.NOT_ANALYZED));
- doc.add(new Field("contents",contents[i],Field.Store.YES,Field.Index.ANALYZED));
- doc.add(new Field("name",names[i],Field.Store.YES,Field.Index.NOT_ANALYZED_NO_NORMS));
- writer.addDocument(doc);
- }
- } catch (CorruptIndexException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (LockObtainFailedException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- finally{
- if(writer!=null)
- {
- try {
- writer.close();
- } catch (CorruptIndexException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- }
- }
- //更新索引
- public void update()
- {
- /*lucene本身不支持更新
- *
- * 通过删除索引然后再建立索引来更新
- */
- IndexWriter writer=null;
- Document doc=null;
- try {
- writer =new IndexWriter(directory,new IndexWriterConfig(Version.LUCENE_36,
- new StandardAnalyzer(Version.LUCENE_36)));
- writer.deleteAll();
- for(int i=0;i<ids.length;i++)
- {
- doc=new Document();
- doc.add(new Field("id",ids[i],Field.Store.YES,Field.Index.NOT_ANALYZED_NO_NORMS));
- doc.add(new Field("emails",emails[i],Field.Store.YES,Field.Index.NOT_ANALYZED));
- doc.add(new Field("contents",contents[i],Field.Store.YES,Field.Index.ANALYZED));
- doc.add(new Field("name",names[i],Field.Store.YES,Field.Index.NOT_ANALYZED_NO_NORMS));
- writer.updateDocument(new Term("id","1"), doc);
- }
- } catch (CorruptIndexException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (LockObtainFailedException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- finally{
- if(writer!=null)
- {
- try {
- writer.close();
- } catch (CorruptIndexException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- }
- }
- }
- //测试类
- package org.se.lucene;
- import org.junit.Test;
- public class test {
- @Test
- public void testIndex()
- {
- lucene_index l_index=new lucene_index();
- l_index.index();
- }
- @Test
- public void testquary()
- {
- lucene_index l_index=new lucene_index();
- l_index.quary();
- }
- @Test
- public void testDelete()
- {
- lucene_index l_index=new lucene_index();
- l_index.delete();
- }
- @Test
- public void testunDelete()
- {
- lucene_index l_index=new lucene_index();
- l_index.undelete();
- }
- @Test
- public void testForceDelete()
- {
- lucene_index l_index=new lucene_index();
- l_index.forceDelete();
- }
- @Test
- public void testmerge()
- {
- lucene_index l_index=new lucene_index();
- l_index.merge();
- }
- @Test
- public void upDate()
- {
- lucene_index l_index=new lucene_index();
- l_index.update();
- }
- }
lucene索引删除,恢复,更新
最新推荐文章于 2021-04-29 20:48:06 发布