lucene 4.x中如何只存储不做索引

来源:互联网 发布:淘宝怎么提高人气 编辑:程序博客网 时间:2024/05/16 16:52

在3.x的版本中可以用new Field("id",map.get("ID").toString(),Store.YES,Index.NOT_ANALYZED)来让lucene做索引,只存储。在4.x中,要只做存储不做索引,可以这样

FieldType testType = new FieldType();                testType.setIndexed(false);                testType.setStored(true);                Field test = new Field("asdf", "asdfasf", testType);                document.add(test);
如果用这个
       IntField test = new IntField(FEILD_ID, app.getAppId(), Field.Store.YES);                test.fieldType().setIndexed(false);                document.add(test);
会报 this FieldType is already frozen and cannot be changed 这个错误,

XXXXField在定义的时候加了frozen参数,是禁止你修改那个变量的。

还有一种情况是,不做索引,也不分词,只存储。但是FieldType是默认分词,所以只能这样

FieldType testType = new FieldType(); testType.setIndexed(false);testType.setTokenized(false);testType.setStored(true); Field test = new Field("asdf", "asdfasf", testType); document.add(test);