Прежде всего, вот замечание о IntPoint
поле
Индексированное поле для фильтров быстрого диапазона. Если вам также нужно хранить
значение, вы должны добавить отдельный экземпляр StoredField.
что в основном означает, я не уверен, как у вас это работает:
IndexableField field = doc.getField("Value");
он должен вернуть вам null
вместо поля.
Также применимо ко всем полям - если вы работаете с Документом, возвращенным вам Lucene, - он будет содержать только те поля, которые сохранены еще раз.
Для сохраненных полей вы можете легко получить их тип, выполнив что-то вроде этого:
((StoredField) text).fieldsData
, который вернул бы именно то, что там хранится - Float или String или Double.
Другая возможность - вызвать набор методов stringValue, binaryValue, readerValue, numericValue
, который вернет вам String
, ByteRef
, Reader
или Number
или ноль, например, если это не число.