lucene 索引维护
2017-08-03 10:36 U歌 阅读(211) 评论(0) 收藏 举报1.1 需求
图书信息在数据库发生变化,所以索引库相对应的也要发生增删改变化。
1.2 添加索引
参考入门程序的索引流程
IndexWriter.addDocument(document);
1.3 删除索引
增删改操作,都是需要通过IndexWriter对象来操作
1.3.1 根据条件删除
Term是索引域中最小的单位。根据条件删除时,建议根据唯一键来进行删除。在solr中就是根据ID来进行删除和修改操作的。
1 @Test 2 public void deleteIndex() throws Exception { 3 // 创建分词器,标准分词器 4 Analyzer analyzer = new StandardAnalyzer(); 5 6 // 创建IndexWriter 7 IndexWriterConfig cfg = new IndexWriterConfig(Version.LUCENE_4_10_3, 8 analyzer); 9 Directory directory = FSDirectory 10 .open(new File("E:\\11-index\\hm19\\")); 11 // 创建IndexWriter 12 IndexWriter writer = new IndexWriter(directory, cfg); 13 14 // Terms 15 // writer.deleteDocuments(new Term("id", "1")); 16 17 // 删除全部(慎用) 18 writer.deleteAll(); 19 20 writer.close(); 21 }
1.4 修改索引
1 @Test 2 public void updateIndex() throws Exception { 3 // 创建分词器,标准分词器 4 Analyzer analyzer = new StandardAnalyzer(); 5 6 // 创建IndexWriter 7 IndexWriterConfig cfg = new IndexWriterConfig(Version.LUCENE_4_10_3, 8 analyzer); 9 10 Directory directory = FSDirectory 11 .open(new File("E:\\11-index\\hm19\\")); 12 // 创建IndexWriter 13 IndexWriter writer = new IndexWriter(directory, cfg); 14 15 // 第一个参数:指定查询条件 16 // 第二个参数:修改之后的对象 17 // 修改时如果根据查询条件,可以查询出结果,则将以前的删掉,然后覆盖新的Document对象,如果没有查询出结果,则新增一个Document 18 // 修改流程即:先查询,再删除,在添加 19 Document doc = new Document(); 20 doc.add(new TextField("name", "lisi", Store.YES)); 21 writer.updateDocument(new Term("name", "zhangsan"), doc); 22 23 writer.close(); 24 }
浙公网安备 33010602011771号