- N +

lucene4.x与lucene3.x 索引操作对比

lucene4.x与lucene3.x 索引操作对比原标题:lucene4.x与lucene3.x 索引操作对比

导读:

lucene4.x与lucene3.x索引操作对比  lucene4.0版本做了较大的改变,其中在索引域和norms方面我们发现3.x中我们常用的属性和构造...

文章目录 [+]

lucene4.x与lucene3.x索引操作对比 

 lucene4.0版本做了较大的改变,其中在索引域和norms方面我们发现3.x中我们常用的属性和构造方法都被废弃了,怎么办呢?用已经废弃的方法和属性?答案 当然是no,所以我在查阅了许多国外的资料(因为国内关于这个问题的资料没有)和论坛之后整理了3.x版本和4.x版本的对比如下,也算是做个记录备忘了。

        lucene 3.x版本创建Field并控制域索引及域存储代码示例:

   new Field("id",ids[i],Field.Store.YES,Field.Index.NOT_ANALYZED_NO_NORMS)。

        lucene 4.x要对其控制有两种方法:

       1、创建Field的子类,使用Field的子类的默认特性控制,下面是Field的子类及对应特性

              StringField:不分词、被索引。即对应Field.Index.NOT_ANALYZED。适用于原子型内容,如id、url等。

              TextField:分词、被索引。即对应Filed.Index.ANALYZED。

              StoredField:不被索引,当然也不被分词。即对应Field.Index.NO。

              所以我们可以用新的构造方法new StringField("id",ids[i],Field.Store.YES)来完成功能。但是这种方式明显不够灵活,所以个人更喜欢第二种。

       2、使用构造方法new Field("id", string, fieldtype)。这里需要先创建fieldtype对象,并使用其本身方法控制索引域和存储域。示例代码如下

                FieldType fieldtype = new FieldType();
                fieldtype.setStored(true);
                fieldtype.setOmitNorms(true);
                fieldtype.setIndexed(true);
                fieldtype.setTokenized(true);


本文标题:lucene4.x与lucene3.x 索引操作对比
本文链接:http://www.kyjszj.com/htzq/95.html
作者授权:除特别说明外,本文由 开源技术之家 原创编译并授权 开源技术之家 刊载发布。
版权声明:本文不使用任何协议授权,您可以任何形式自由转载或使用。

有好的文章希望我们帮助分享和推广,猛戳这里我要投稿

返回列表
上一篇:
下一篇:

发表评论中国互联网举报中心

快捷回复:

    评论列表 (暂无评论,共585人参与)参与讨论

    还没有评论,来说两句吧...