【问题标题】:How to prevent a field from not analyzing in lucene如何防止字段不在lucene中分析
【发布时间】:2013-09-27 04:12:28
【问题描述】:

我想要一些像 urls 这样的字段被索引和存储但不被分析。字段类有一个构造函数来做同样的事情。

Field(String name, String value, Field.Store store, Field.Index index)

但是这个构造函数从 lucene 4 开始就被弃用了,建议使用 StringField 或 TextField 对象。但是他们没有任何构造函数来指定要索引的字段。那么能做到吗?

【问题讨论】:

标签: lucene


【解决方案1】:

将未分析的字段作为单个标记进行索引和存储的正确方法是使用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)

【讨论】:

    【解决方案2】:

    您好,您所说的完全正确。使用 Lucene 提供的新字段,您无法实现您想要的。 您可以按照您的描述继续使用该字段,也可以通过实现接口IndexableField 来实现您自己的字段。在那里你可以自己决定你希望你的字段有什么行为。

    【讨论】:

    • 每当某些东西被弃用时,总会有另一种更好的方法来做到这一点。所以我想应该有什么。我可以继续使用它,但是当更高版本到来时,它会被完全删除,以后可能会出现问题。
    • 我再次阅读了 StringField 文档,默认情况下不分析 StringField,因为它没有被标记化。它被索引并存储为您想要的单个值。 StringField
    • 请记住,如果您需要更多不太常见的配置,您需要实现自己的 Fields 或继续使用 Field 类型。正如你之前指出的那样。如果发布新版本,实施您自己的字段会更安全。
    猜你喜欢
    • 1970-01-01
    • 2011-07-22
    • 1970-01-01
    • 1970-01-01
    • 2013-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-23
    相关资源
    最近更新 更多