hibernate search 4 различных результата по индексу lucene

59
8

в реляционной базе данных есть некоторые нормализованные таблицы, в то время как фактические релевантные данные для меня хранятся в представлении, которое действительно большое (около 120 миллионов строк для 80 столбцов).
Около 10 из 80 столбцов имеют отношение к поисковым запросам, которые должны быть реализованы с помощью поиска в спящем режиме. 4.3.2.
Мне кажется логичным, что, индексируя объект представления и запрашивая только 10 из 80 желаемых столбцов (аннотация @Field), я получаю множество избыточных данных, которые отличаются только первичным ключом.

В настоящее время я делаю следующее:

ScrollableResults ids = fullTextSession.createCriteria(clazz)
.addOrder(Order.asc("id"))
.add(Restrictions.ilike(field, query))
.add(Projections.distinct(Projections.id()))
.setProjection((Projections.distinct(Projections.id())))
.scroll(ScrollMode.FORWARD_ONLY);

ArrayList<String> results = new ArrayList<String>();

while (ids.next()) {
ScrollableResults redundantResults = fullTextSession.createCriteria(clazz)
.add(Restrictions.idEq(ids.get(0)))
.setProjection(Projections.projectionList()
.add(Projections.property("name"))
.add(Projections.property("city"))
.add(Projections.property("postal"))
)
.scroll(ScrollMode.FORWARD_ONLY);
if (redundantResults.next())
results.add((String) redundantResults.get(0));
}

Я знаю, что я должен быть где-то не так, мои намерения:
1. Получите отличный набор объектов, соответствующих моим критериям поиска.
2. Получите их только с использованием индекса lucene, так как DB-запрос слишком дорог

Хотя шаг получения отдельных идентификаторов, по-видимому, действительно хорош в производительности, второй шаг получения данных свойств из документа происходит очень медленно. Мне кажется, что никакие запросы к БД не выполняются в течение обоих шагов, что соответствует моим намерениям.
Я думаю, что прогнозы - единственный способ работать с индексом lucene и избегать запросов на спящий режим в DB, или я ошибаюсь?

Я ценю любые советы, как добиться лучшей эффективности поиска.

спросил(а) 2016-02-07T03:10:00+03:00 4 года, 8 месяцев назад
0
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема