我想要一些像 urls 这样的字段被索引和存储但不被分析。Field 类有一个构造函数来做同样的事情。
Field(String name, String value, Field.Store store, Field.Index index)
但是这个构造函数自 lucene 4 以来已被弃用,建议使用 StringField 或 TextField 对象。但是他们没有任何构造函数来指定要索引的字段。那么可以做到吗?
我想要一些像 urls 这样的字段被索引和存储但不被分析。Field 类有一个构造函数来做同样的事情。
Field(String name, String value, Field.Store store, Field.Index index)
但是这个构造函数自 lucene 4 以来已被弃用,建议使用 StringField 或 TextField 对象。但是他们没有任何构造函数来指定要索引的字段。那么可以做到吗?
将未分析的字段作为单个标记进行索引和存储的正确方法是使用StringField
. 它旨在处理原子字符串,如 id 编号、url 等。您可以指定它是否存储与 Lucene 3.X 中的相似性
如:
new StringField("myUrl, "http://stackoverflow.com/questions/19042587/how-to-prevent-a-field-from-not-analyzing-in-lucene", Field.Store.YES)
你好,你说的完全正确。使用 Lucene 提供的新字段,您无法实现您想要的。您可以按照您的描述继续使用该字段,也可以通过实现接口IndexableField来实现您自己的字段。在那里你可以自己决定你希望你的领域有什么行为。