2017-02-18 6 views
0

у меня есть базовый класс сВ спящем поиске значения Integer при индексируется, как представляется, сохраняются в виде символов

@Field 
protected Integer group; 

на Hibernate 5.6.0.Final

Я поставил мои объекты значение значения 0 или 1 . Но когда я наблюдаю индекс с помощью Луку он всегда показывает 4 строки, сохраненные как h, p, x ,


Мои тесты работают отлично на самом деле, когда я добавить MustJunction с запросом диапазона на одном O f группа, которую я получаю, правильно фильтрует, возвращает результат. Может, я неправильно интерпретирую Люка ...?

ответ

1

Hibernate Search сохраняет по умолчанию числовые значения в виде числовых полей в Lucene. Это означает, что даже если значение было сохранено в индексе как есть, вы бы не указали строку «0» или «1» в своем индексе, а некоторое двоичное значение.

Но даже с учетом этого вы, вероятно, удивлены, увидев различную двоичную кодировку для идентичных значений источника. Это оптимизация: помните, что вы просматриваете содержимое инвертированного индекса, целью которого является не поиск значений для данного документа, а поиск документов, соответствующих определенному значению.

Если вас интересует, как работает числовая индексация в Lucene, вы можете взглянуть на IntField javadoc. Но так как вы запрашиваете работу, это будет действительно только из любопытства :)

+0

спасибо будет позже обновлено с моими выводами –