lucene series 2 document 文档 索引创建 基本索引操作

1 ,添加索引Adding documents to an index

2,删除索引 Deleting documents from an index 

3,更新索引Updating documents in the index


示例代码:

//添加index

 directory = new RAMDirectory();
    IndexWriter writer = getWriter();
    for (int i = 0; i < ids.length; i++) 
{
      Document doc = new Document();
      doc.add(new Field("id", ids[i],
                        Field.Store.YES,
                        Field.Index.NOT_ANALYZED));
      doc.add(new Field("country", unindexed[i],
                        Field.Store.YES,
                        Field.Index.NO));
      doc.add(new Field("contents", unstored[i],
                        Field.Store.NO,
                        Field.Index.ANALYZED));
      doc.add(new Field("city", text[i],
                        Field.Store.YES,
                        Field.Index.ANALYZED));
      writer.addDocument(doc);
}

 private IndexWriter getWriter() throws IOException {
    return new IndexWriter(directory, new WhitespaceAnalyzer(),
                           IndexWriter.MaxFieldLength.UNLIMITED);
  }


//删除index
public void testDeleteBeforeOptimize() throws IOException {
  IndexWriter writer = getWriter();
  assertEquals(2, writer.numDocs());
  writer.deleteDocuments(new Term("id", "1"));
  writer.commit();
  assertTrue(writer.hasDeletions());
  assertEquals(2, writer.maxDoc());
  assertEquals(1, writer.numDocs());
  writer.close();
}
public void testDeleteAfterOptimize() throws IOException {
  IndexWriter writer = getWriter();
  assertEquals(2, writer.numDocs());
  writer.deleteDocuments(new Term("id", "1"));
  writer.optimize();
  writer.commit();
  assertFalse(writer.hasDeletions());
  assertEquals(1, writer.maxDoc());
  assertEquals(1, writer.numDocs());
  writer.close();
}

//更新 index
public void testUpdate() throws IOException {
  assertEquals(1, getHitCount("city", "Amsterdam"));
  IndexWriter writer = getWriter();
  Document doc = new Document(); 
  doc.add(new Field("id", "1",
                    Field.Store.YES,
                    Field.Index.NOT_ANALYZED));
  doc.add(new Field("country", "Netherlands",
                    Field.Store.YES,
                    Field.Index.NO));
  doc.add(new Field("contents",                    
                    "Den Haag has a lot of museums",
                    Field.Store.NO,
                    Field.Index.ANALYZED));
  doc.add(new Field("city", "Den Haag",
                    Field.Store.YES,
                    Field.Index.ANALYZED));
  writer.updateDocument(new Term("id", "1"),
                        doc);
  writer.close();
  assertEquals(0, getHitCount("city", "Amsterdam"));
  assertEquals(1, getHitCount("city", "Den Haag"));
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值