代码如下:
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();
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