lucene在doc.add(new Field("content",curArt.getContent(),Field.Store.NO,Field.Index.TOKENIZED)); 通过存储属性你可以控制是否对这个Field进行存储; 通过索引属性你可以控制是否对该Field进行索引。 事实上对这两个属性的正确组合很重要。
在新版本3,0中,已经没有TOKENIZED了 ,取代的是Field.Index.ANALYZED; 具体参考下面的介绍: 我们那文章表为例.articleinfo.有ID,title(标题),sumary(摘要),content(内容),userName(用户名) 其中title(标题),sumary(摘要)属于第一种情况,既要索引也要分词,也要存储. content(内容)要分词,索引,但不存储.由于他太大了,而且界面也不用显示整个内容. ID要存储,不用索引.因为没人用他来查询.但拼URL却很需要他.索引要存储. userName(用户名)索引,但不分词.可用保存.为什么不分词?比如"成吉思汗",我不想被"成汉"搜索到.我希望要么"成吉思汗"或者"* 吉思*"通配符搜到. 总结如下: 1.如果要对某Field进行查找,那么一定要把Field.Index设置为TOKENIZED或UN_TOKENIZED。TOKENIZED 会对Field的内容进行分词;而UN_TOKENIZED不会,只有全词匹配,该Field才会被选中。
补充: Field.Store.YES:存储字段值(未分词前的字段值) |
http://hi.baidu.com/%C1%E8%B6%AF%D0%A1%C9%FA/blog/item/75802c14658e9205c93d6da3.html