【问题标题】:How to Index Short fields in Lucene 7.4如何在 Lucene 7.4 中索引短字段
【发布时间】:2018-09-10 15:07:05
【问题描述】:

我正在使用 Lucene 7.4 来索引和存储字段。在查看 API 时,我注意到提供了用于索引大多数数据类型(字节、整数、长整型、双精度、浮点数、字符串)的字段类,但没有用于 Shorts 的字段类。 https://lucene.apache.org/core/7_4_0/core/org/apache/lucene/document/Field.html

我的理解是,我可以使用默认的 Field 类为 Shorts 创建一个“自定义”字段类型,但我不确定如何正确构造它,因为没有构造函数接受我的字段类型:

FieldType shortFieldType = new FieldType();
shortFieldType.setStored(true);
shortFieldType.setTokenized(false);
shortFieldType.setIndexOptions(IndexOptions.DOCS);
shortFieldType.setDocValuesType(DocValuesType.NUMERIC);

Field shortField = new Field("fieldName", ???, shortFieldType);
shortField.setShortValue((Short) shortValue);
document.add(shortField);

我也很好奇为什么 API 中没有定义 ShortPoint 类。我可能会使用 IntPoint 侥幸逃脱,但我想避免浪费空间。我之前所做的所有研究都参考了具有不同类结构的早期版本的 Lucene。

【问题讨论】:

    标签: java lucene


    【解决方案1】:

    编解码器在将值写入索引时已经对其进行了压缩,因此就索引的大小而言,将 IntPoint 用于短值与实现 ShortPoint 没有区别。

    【讨论】:

    • 感谢您的回答!如果压缩是自动发生的,我觉得奇怪的是它们为所有其他数字字段类型提供字段,而不是对所有内容都使用 LongPoint 和 DoublePoint 并让编解码器对其进行压缩。
    猜你喜欢
    • 2016-02-18
    • 1970-01-01
    • 2013-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-29
    • 2012-02-12
    相关资源
    最近更新 更多