Lucene.NET更新索引

在创建索引之后,经常会更新数据库中的数据,这时需要更新索引,利用 indexwriter的UpdateDocument方法来实现。

代码如下:

Term term  =   new  Term( " id " " 17819 " );
IndexWriter writer 
=   new  IndexWriter( " D:/index/ " new  ChineseAnalyzer(),  false );
Document doc 
=   new  Document();
doc.Add(
new  Field( " id " " 17819 " , Field.Store.YES, Field.Index.UN_TOKENIZED)); // 此处应是Field.Index.UN_TOKENIZED而不是Field.Index.TOKENIZED,如果是后者,执行UpdateDocument方法会添加一条新索引数据
doc.Add( new  Field( " title " " 用户控制123232 " , Field.Store.YES, Field.Index.TOKENIZED));
doc.Add(
new  Field( " summary " " 23用户控制232221 " , Field.Store.YES, Field.Index.TOKENIZED));
writer.UpdateDocument(term, doc);
writer.Close(); 

 

从网上搜了一下TOKENIZED和UN_TOKENIZED:如果使用Field.Index.TOKENIZED,值就会被分析,让Lucene可以更充分地利用功能强大的全文索引和搜索特性。正如我们会看到的那样,缺点在于,无法按标记化(tokenized)的字段对结果进行排序。如果想为字段建立索引,而不需要先进行分析,那么Field.Index.UN_TOKENIZED很有用 。(没有搞明白,为什么TOKENIZED的字段,更新时是添加一条新数据,难道是删除时没有找到然后添加?

摘自:http://www.cnblogs.com/dlz1123/archive/2011/02/25/1964927.html

转载于:https://www.cnblogs.com/sophist/archive/2011/06/18/2084166.html

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值