zoukankan      html  css  js  c++  java
  • Lucene对index操作

      1 package org.lucene.index;
      2 
      3 import java.io.File;
      4 import java.io.IOException;
      5 
      6 import org.apache.lucene.analysis.standard.StandardAnalyzer;
      7 import org.apache.lucene.document.Document;
      8 import org.apache.lucene.document.Field;
      9 import org.apache.lucene.index.CorruptIndexException;
     10 import org.apache.lucene.index.IndexReader;
     11 import org.apache.lucene.index.IndexWriter;
     12 import org.apache.lucene.index.IndexWriterConfig;
     13 import org.apache.lucene.index.Term;
     14 import org.apache.lucene.store.Directory;
     15 import org.apache.lucene.store.FSDirectory;
     16 import org.apache.lucene.store.LockObtainFailedException;
     17 import org.apache.lucene.util.Version;
     18 
     19 public class IndexUtil {
     20     String[] ids = { "aa", "bb", "cc", "dd", "ee", "ff", "gg" };
     21     String[] emails = { "aaa@lucenes.com", "bbb@lucenes.com",
     22             "ccc@lucenes.com", "ddd@lucenes.com", "eee@lucenes.com",
     23             "fff@lucenes.com", "ggg@lucenes.com" };
     24     String[] contents = { "aaaaaaaaaaaaaa", "bbbbbbbbbbbbbb",
     25             "ccccccccccccccc", "dddddddddddddd", "eeeeeeeeeeeeee",
     26             "fffffffffffffff", "gggggggggggggg" };
     27     String[] names = { "zhangsan", "lisi", "wangwu", "zhaoliu", "tianqi",
     28             "zhaoba", "chenjiu" };
     29     Integer[] attachs = { 1, 2, 5, 4, 6, 2, 3 };
     30 
     31     Directory directory = null;
     32 
     33     public IndexUtil() {
     34         try {
     35             directory = FSDirectory.open(new File(
     36                     "E:/luceneworkspace/Lucene2/path"));
     37         } catch (IOException e) {
     38             e.printStackTrace();
     39         }
     40     }
     41 
     42     /**
     43      * 创建索引
     44      */
     45     public void index() {
     46         IndexWriter indexWriter = null;
     47         try {
     48             indexWriter = new IndexWriter(directory, new IndexWriterConfig(
     49                     Version.LUCENE_35, new StandardAnalyzer(Version.LUCENE_35)));
     50             indexWriter.deleteAll();
     51             Document document = null;
     52             for (int i = 0; i < ids.length; i++) {
     53                 document = new Document();
     54                 document.add(new Field("id", ids[i], Field.Store.YES,
     55                         Field.Index.NOT_ANALYZED_NO_NORMS));
     56                 document.add(new Field("email", emails[i], Field.Store.YES,
     57                         Field.Index.NOT_ANALYZED));
     58                 document.add(new Field("content", contents[i], Field.Store.NO,
     59                         Field.Index.ANALYZED));
     60                 document.add(new Field("name", names[i], Field.Store.YES,
     61                         Field.Index.NOT_ANALYZED));
     62                 indexWriter.addDocument(document);
     63             }
     64         } catch (CorruptIndexException e) {
     65             e.printStackTrace();
     66         } catch (LockObtainFailedException e) {
     67             e.printStackTrace();
     68         } catch (IOException e) {
     69             e.printStackTrace();
     70         } finally {
     71             try {
     72                 if (indexWriter != null)
     73                     indexWriter.close();
     74             } catch (CorruptIndexException e) {
     75                 e.printStackTrace();
     76             } catch (IOException e) {
     77                 e.printStackTrace();
     78             }
     79         }
     80     }
     81 
     82     /**
     83      * 删除索引
     84      */
     85     public void delete() {
     86         IndexWriter indexWriter = null;
     87         try {
     88             indexWriter = new IndexWriter(directory, new IndexWriterConfig(
     89                     Version.LUCENE_35, new StandardAnalyzer(Version.LUCENE_35)));
     90             indexWriter.deleteDocuments(new Term("id", "aa"));
     91         } catch (CorruptIndexException e) {
     92             e.printStackTrace();
     93         } catch (LockObtainFailedException e) {
     94             e.printStackTrace();
     95         } catch (IOException e) {
     96             e.printStackTrace();
     97         } finally {
     98             try {
     99                 if (indexWriter != null)
    100                     indexWriter.close();
    101             } catch (CorruptIndexException e) {
    102                 e.printStackTrace();
    103             } catch (IOException e) {
    104                 e.printStackTrace();
    105             }
    106         }
    107     }
    108 
    109     /**
    110      * 恢复索引
    111      */
    112     public void undelete() {
    113         IndexReader indexReader = null;
    114         try {
    115             indexReader = IndexReader.open(directory, false);
    116             indexReader.undeleteAll();
    117         } catch (CorruptIndexException e) {
    118             e.printStackTrace();
    119         } catch (LockObtainFailedException e) {
    120             e.printStackTrace();
    121         } catch (IOException e) {
    122             e.printStackTrace();
    123         } finally {
    124             try {
    125                 if (indexReader != null)
    126                     indexReader.close();
    127             } catch (IOException e) {
    128                 e.printStackTrace();
    129             }
    130         }
    131     }
    132 
    133     /**
    134      *  清空回收站索引
    135      */
    136     public void clear(){
    137         IndexWriter indexWriter = null;
    138         try {
    139             indexWriter = new IndexWriter(directory, new IndexWriterConfig(
    140                     Version.LUCENE_35, new StandardAnalyzer(Version.LUCENE_35)));
    141             indexWriter.forceMergeDeletes();
    142         } catch (CorruptIndexException e) {
    143             e.printStackTrace();
    144         } catch (LockObtainFailedException e) {
    145             e.printStackTrace();
    146         } catch (IOException e) {
    147             e.printStackTrace();
    148         } finally {
    149             try {
    150                 if (indexWriter != null)
    151                     indexWriter.close();
    152             } catch (CorruptIndexException e) {
    153                 e.printStackTrace();
    154             } catch (IOException e) {
    155                 e.printStackTrace();
    156             }
    157         }
    158     }
    159     
    160     /**
    161      * 更新索引
    162      */
    163     public void update(){
    164         IndexWriter indexWriter = null;
    165         try {
    166             indexWriter = new IndexWriter(directory, new IndexWriterConfig(
    167                     Version.LUCENE_35, new StandardAnalyzer(Version.LUCENE_35)));
    168             Document doc=new Document();
    169             doc.add(new Field("id", "hh", Field.Store.YES,
    170                     Field.Index.NOT_ANALYZED_NO_NORMS));
    171             doc.add(new Field("email", emails[2], Field.Store.YES,
    172                     Field.Index.NOT_ANALYZED));
    173             doc.add(new Field("content", contents[3], Field.Store.NO,
    174                     Field.Index.ANALYZED));
    175             doc.add(new Field("name", names[4], Field.Store.YES,
    176                     Field.Index.NOT_ANALYZED));
    177             indexWriter.updateDocument(new Term("id","aa"), doc);
    178         } catch (CorruptIndexException e) {
    179             e.printStackTrace();
    180         } catch (LockObtainFailedException e) {
    181             e.printStackTrace();
    182         } catch (IOException e) {
    183             e.printStackTrace();
    184         } finally {
    185             try {
    186                 if (indexWriter != null)
    187                     indexWriter.close();
    188             } catch (CorruptIndexException e) {
    189                 e.printStackTrace();
    190             } catch (IOException e) {
    191                 e.printStackTrace();
    192             }
    193         }
    194     }
    195     
    196     public void query() {
    197         try {
    198             IndexReader indexReader = IndexReader.open(directory);
    199             System.out.println("maxDoc:" + indexReader.maxDoc());
    200             System.out.println("numDocs:" + indexReader.numDocs());
    201             System.out.println("numDeleteDocs:"+indexReader.numDeletedDocs());
    202         } catch (CorruptIndexException e) {
    203             e.printStackTrace();
    204         } catch (IOException e) {
    205             e.printStackTrace();
    206         }
    207 
    208     }
    209 }
  • 相关阅读:
    Top 10 Free IT Certification Training Resources
    在线学编程!十大IT在线教育网站推荐
    2016年国际十大科技新闻解读
    2016上半年度私有云提供商排行榜 :华为位居第一
    12 Top Open Source Data Analytics Apps
    Careers/Staffing Index
    top 9 Cloud Computing Failures
    344. Reverse String
    283. Move Zeroes
    DataContract with Json.Net
  • 原文地址:https://www.cnblogs.com/Laupaul/p/2454617.html
Copyright © 2011-2022 走看看