двойное значение не индексируется с помощью Lucene 7 - PullRequest
0 голосов
/ 17 января 2019

Helli,

Мне не удается проиндексировать двойное значение с помощью Lucene 7. После выполнения

public void indexDouble(Document document, String name, Double value) {
  double val = (double) value;
  document.add(new DoublePoint(name, val));
}

я проверяю индексированные значения с помощью Luke, и значение для этого всегда пустоindex.

После добавления DoublePoint к документу (в моем случае 44), при отладке я вижу, что значение добавлено

 DoublePoint <9xjcl4v4r:vq4ebgph8:44.0> stored<9xjcl4v4r:vq4ebgph8:44.0> 

сохранено, но я не вижу флаг indexed,Не уверен, что это проблема, потому что я так же индексирую длинные значения и поиск работает.

Есть идеи?

Спасибо

1 Ответ

0 голосов
/ 18 января 2019

Чтобы быть справедливым с вами, я очень сомневаюсь, что это работает, как вы описываете.

Причина этого заключается в следующем - все типы Point , включая DoublePoint , являются просто индексированным полем и не сохраняются, поэтому у них даже есть замечание в выражении JavaDoc:

Индексированное двойное поле для фильтров быстрого диапазона. Если вам также нужно сохранить значение, вы должны добавить отдельный экземпляр StoredField.

Причина, по которой вы ничего не видите в Люк , также довольно проста. Люк сам по себе не волшебство, и он может показывать вам только значения, если они сохранены (что не так). Тем не менее, вы все равно можете их искать, вы просто не можете вернуть их обратно.

Для целей отладки / извлечения вам необходимо добавить еще одно сохраненное поле, например:

doc.add(new StoredField(“double_stored”, value));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...