Как индексировать короткие поля в Lucene 7.4 - PullRequest
0 голосов
/ 10 сентября 2018

Я использую Lucene 7.4 для индексирования и хранения полей. Глядя на API, я заметил, что были предусмотрены классы полей для индексации большинства типов данных (Byte, Integer, Long, Double, Float, String), но нет класса полей для шортов. https://lucene.apache.org/core/7_4_0/core/org/apache/lucene/document/Field.html

Насколько я понимаю, я могу использовать класс поля по умолчанию для создания «настраиваемого» типа поля для шортов, но я не уверен, как его правильно построить, так как нет конструктора, который принимает мой тип поля:

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, которые имели различные классовые конструкции.

1 Ответ

0 голосов
/ 12 сентября 2018

Кодек уже сжимает значения, когда они записываются в индекс, поэтому не будет никакой разницы с точки зрения размера индекса, используя IntPoint для коротких значений по сравнению с реализацией ShortPoint.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...