Не работает сортировка по StoredField в Lucene 8
При выполнении запроса с сортировкой в Lucene 8.4.1 получаю ошибку:
java.lang.IllegalStateException: unexpected docvalues type NONE for field 'rating' (expected=NUMERIC).
Почему нельзя выполнить сортировку по StoredField?
В индекс добавляю документ так:
Document document = new Document();
document.add(new StoredField("id", id));
document.add(new StoredField("rating", rating));
indexWriter.addDocument(document);
Выполняю поиск так:
IndexSearcher searcher = new IndexSearcher(DirectoryReader.open(directory));
Sort sort = new Sort(new SortField("rating", SortField.Type.FLOAT, true));
TopDocs topDocs = searcher.search(queryBuilder.build(), 10, sort);
Ответы (1 шт):
Автор решения: dmtr
→ Ссылка
По идее нужно использовать SortedNumericSortField в конструкторе Sort, чтобы правильно вызвать searcher.search(...)
Sort sort = new Sort(new SortedNumericSortField("rating", SortField.Type.FLOAT, true));