Я прочитал все ответы на один и тот же вопрос, и я не стал более ясным, на каком я должен использовать его для моего использования и почему. Оба возвращают тот же результат. Я понимаю, что "FilterQuery будет кэшироваться, делая общее время запроса быстрее", как кто-то правильно ответил.
Я также понимаю, что "фильтрация также позволяет пометить грани, поэтому вы можете пометить грани, чтобы включить все грани, возвращаемые для вашего запроса", как и кто-то еще правильно ответил.
Что я не понимаю, прочитав это, почему тогда кто-то будет использовать Q, так как FQ кажется намного лучше, основываясь на всех ответах и книгах, которые я видел.
Кроме того, я уверен, что есть причина, по которой они существуют.
Что бы я хотел, это выяснить, что лучше всего подходит для моего случая использования - документации очень не хватает в полезных примерах.
- В моих документах есть: дата, клиент, отчет и некоторые другие поля.
- 1 деловая дата = 3,5 миллиона документов.
- Общее количество документов составляет 250 миллионов и подсчет (60 дат * 8000 клиентов * 1000 отчетов)
- Я граничу по дате, клиенту, отчету, и я использую тегирование фасетов.
- Общий интерфейс выглядит как любой сайт электронной коммерции, например: Amazon, с гранями слева.
- Подсчет очков не используется.
Бизнес-правило №1: дата должна всегда присутствовать в каждом запросе.
Бизнес-правило № 2: 99% запросов будут использовать самую позднюю дату, но RANDOM-клиент и случайный отчет.
A Факт: Мы определили, что его огранка медленная, а не поисковая.
ВОПРОСЫ:
Учитывая эти критерии поиска и эти способы написания запроса: <Я >
A) q = date: 20130214 И клиент: Joe и facet.field = date и facet.field = client...
B) q = date: 20130214 и fq = client: Joe и facet.field = date и facet.field = client...
C) q = client: Joe и fq = date: 20130214 и facet.field = date и facet.field = client...
D) q = *: * и fq = date: 20130214 и fq = client: Joe и facet.field = date и facet.field = client...
- какой из вышеперечисленных вы считаете лучшим и почему? Помните, что большинство запросов будут работать против 20130214.
- в FQ-фильтрации, сделанной первым, а затем применяется условие Q или наоборот?
Сегодня у меня есть D) используется во всех случаях, но я подозреваю, что это неправильно и вызывает OOM в Solr (версия 3.6).
Благодарим за помощь!