在 Lucene 3.9 版本之前,我们可以使用 FIELD.INDEX.NO 或 FIELD.INDEX.ANALYZED 等指定索引或不索引字段。但是在 lucene 4.0 中没有可用的构造函数,我们可以在其中定义 this 。在这个版本中我们如何控制索引?
我的意思是,如果我希望将字段“名称”存储在索引中但不想对其进行索引,那么我该如何在 lucene 4.0 中做到这一点?
在 Lucene 3.9 版本之前,我们可以使用 FIELD.INDEX.NO 或 FIELD.INDEX.ANALYZED 等指定索引或不索引字段。但是在 lucene 4.0 中没有可用的构造函数,我们可以在其中定义 this 。在这个版本中我们如何控制索引?
我的意思是,如果我希望将字段“名称”存储在索引中但不想对其进行索引,那么我该如何在 lucene 4.0 中做到这一点?
可以使用带参数的构造Field.Index
函数,但在 4.0 中已弃用,不应使用。相反,您应该查看 的子类Field
来控制字段的索引方式。
StringField
是标准的未分析索引字段。被索引的字段是单个标记。它是合适的东西,比如标识符,您只需要搜索完全匹配的东西。
TextField
是文本内容的标准分析(当然还有索引)字段。它是全文搜索的合适选择。
StoredField
是一个完全没有索引的存储字段(因此,不可搜索)。
除了StoredField
,它们中的每一个都可以Field.Store
作为构造函数参数传递一个值,类似于 Lucene 3.6。
有关此更改的更多信息,请查看Lucene 迁移指南,特别是标题为“将 IndexableFieldType 与字段实例分开”的部分