04.索引的建立与维护

建立索引

  1. public void createIndex() throws IOException {
  2. //先指定索引库存放的位置
  3. String dumpPath = "D:\\temp\\1110";
  4. Directory directory = FSDirectory.open(new File(dumpPath));
  5. //索引库存放在内存中
  6. //Directory directory = new RAMDirectory();
  7. //指定分析器
  8. StandardAnalyzer standardAnalyzer = new StandardAnalyzer();
  9. IndexWriterConfig config = new IndexWriterConfig(Version.LATEST, standardAnalyzer);
  10. //创建Indexwriter对象
  11. IndexWriter indexWriter = new IndexWriter(directory, config);
  12. //读取歌词并创建Document对象
  13. File musicDir = new File("D:\\传智播客\\01.课程\\04.lucene\\01.参考资料\\歌词\\英文歌词");
  14. for (File f:musicDir.listFiles()) {
  15. //判断是否是文件
  16. if (f.isFile()) {
  17. //创建Document对象
  18. Document document = new Document();
  19. //创建域
  20. //文件名称
  21. Field fieldName = new TextField("filename", f.getName(), Store.YES);
  22. //文件内容
  23. String contentString = FileUtils.readFileToString(f);
  24. Field fieldContent = new TextField("content", contentString, Store.YES);
  25. //文件路径
  26. Field fieldPath = new StoredField("path", f.getPath());
  27. //文件 的大小
  28. Field fieldSize = new LongField("size", FileUtils.sizeOf(f), Store.YES);
  29. //把域添加到Document中
  30. document.add(fieldName);
  31. document.add(fieldContent);
  32. document.add(fieldPath);
  33. document.add(fieldSize);
  34. //把Document写入索引库
  35. indexWriter.addDocument(document);
  36. }
  37. }
  38. //关闭indexwriter
  39. indexWriter.close();
  40. }

删除索引

删除所有索引

  1. public void deleteAllIndex() throws IOException {
  2. IndexWriter indexWriter = getIndexWriter();
  3. indexWriter.deleteAll();
  4. indexWriter.commit();
  5. }

删除指定索引

  1. public void deleteIndex() throws IOException {
  2. IndexWriter indexWriter = getIndexWriter();
  3. //创建一个查询
  4. Query query = new TermQuery(new Term("filename", "张信哲"));
  5. indexWriter.deleteDocuments(query);
  6. indexWriter.commit();
  7. }

更新索引(会替换文档)

  1. // 索引目录
  2. public void updateIndex( ) throws Exception{
  3. Directory directory = FSDirectory.open(new File(indexFolder));
  4. // 定义索引操作对象
  5. IndexWriter indexWriter = new IndexWriter(directory,
  6. new IndexWriterConfig(Version.LUCENE_4_10_3,
  7. new StandardAnalyzer()));
  8. // 创建更新文档
  9. Document doc_update = new Document();
  10. Field field_fileName = new TextField("fileName", "springmvc.txt",
  11. Store.YES);
  12. doc_update.add(field_fileName);
  13. // 根据条件更新索引,将fileName等于“springmvc_test.txt”的更新为上边的文档
  14. // 更新的机制 是先删除再添加,如果原根据fileName没有找到“springmvc_test.txt”,则添加新文档
  15. indexWriter.updateDocument(new Term("fileName", "springmvc_test.txt"),
  16. doc_update);
  17. //提交
  18. indexWriter.commit();
  19. //关闭
  20. indexWriter.close();
  21. }
posted @ 2017-02-28 11:45  Wesly186  阅读(191)  评论(0编辑  收藏  举报