首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网络技术 > 网络基础 >

Lucene.NET 2.9.2里Field的疑问解决方法

2012-03-18 
Lucene.NET 2.9.2里Field的疑问我刚开始用Lucene的C#版本写一个全文检索系统,我写了一句:C# codedocument.

Lucene.NET 2.9.2里Field的疑问
我刚开始用Lucene的C#版本写一个全文检索系统,
我写了一句:

C# code
document.Add(new Field("ID", "test", Field.Store.YES, Field.Index.NOT_ANALYZED));

这样按照文档说是索引但不分析,如果检索的话应该是可以搜出来的,但是结果却没有。我给改成:
C# code
document.Add(new Field("ID", "test", Field.Store.YES, [color=#FF0000]Field.Index.ANALYZED[/color]));


这样就能检索出结果了,好奇怪啊,我写的又不是Field.Index.No,为啥就检索不了了呢?如果非要分析的话,我担心索引时间过长,而且会不会改到ID这个值啊?

[解决办法]
ANALYZED就是代表要解析字段,这个主要是用于标题,关键字,简介字段的
None主要是用来存储但不解析,一般就只是用来存储显示字段,如一个电话号码什么的

而Store是与索引文件的物理存储有关的,你如果要显示出来你必段存储。
如果如关键词你只用来解析不显示那么你可以选择不存储,加上分析就行了。

不知道我讲清楚没有,和2.0原来的TOKEN是一样的,只是把API用ANALYZED感觉更规范一点
[解决办法]
你的两种方式是分词和不分词的区别,之所以不分词没有结果,很可能是你搜索的时候用了分词,如果创建索引时不分词,搜索时分词,当然没有结果。

热点排行