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 = { "[email protected]", "[email protected]",

 22             "[email protected]", "[email protected]", "[email protected]",

 23             "[email protected]", "[email protected]" };

 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 }

 

你可能感兴趣的:(Lucene)