Как хорошо Solr масштабируется по большому количеству фасетных значений?

Я использую Solr, и я хочу фасетировать по полю "группу".

Так как "группа" создается пользователями, потенциально может быть огромное количество значений для "группы".

  • Solr смог бы обработать вариант использования как это? Или Solr действительно не подходит для фасетных полей с большим количеством значений?

  • Я понимаю, что могу установить facet.limit для ограничения количества значений, возвращенных для фасетного поля. Это помогло бы в моем случае? Скажите, что существует 100 000 совпадающих значений для "группы" в поиске, если я установил facet.limit на 50. это ускорило бы запрос, или запрос все еще будет медленным, потому что Solr все еще должен обработать и отсортировать все фасетные значения и возвратить лучшие 50?

  • Какие-либо подсказки относительно того, как настроить Solr для большого количества фасетных значений?

Спасибо.

7
задан Continuation 25 May 2010 в 07:11
поделиться

2 ответа

Начиная с версии 1.4, solr довольно хорошо обрабатывает фасеты с большим количеством значений, поскольку по умолчанию используется простой подсчет фасетов. (facet.method по умолчанию 'fc').

До версии 1.4 solr использовал метод фасетного анализа на основе фильтров (enum), который определенно быстрее для фасетного анализа атрибутов с небольшим количеством значений. Этот метод требует один фильтр на каждое значение фасета.

Что касается facet.limit, думайте о нем как о способе навигации по пространству фасета (в сочетании с facet.offset), как вы перемещаетесь по пространству результатов с помощью rows/offset. Поэтому разумным будет значение 10 ~ 50.

Как и в случае с rows/offset, в силу особенностей Solr, вы можете ожидать снижения производительности facet.limit/facet.offset при увеличении смещения, но все должно быть в полном порядке, если вы остаетесь в разумных пределах.

По умолчанию solr выводит сначала более частые фасеты.

Подведем итоги:

  • Используйте Solr 1.4

  • Убедитесь, что facet.method имеет значение 'fc' (ну, в любом случае, это значение по умолчанию).

  • Перемещайтесь по пространству фасетов с помощью facet.limit/facet.offset.

7
ответ дан 7 December 2019 в 05:18
поделиться

Не упустите возможность включить параметры, связанные с фасетированием кеша (попробуйте разные размеры кеша, чтобы выбрать значения, которые подходят для вашей системы):

   <filterCache class="solr.FastLRUCache" size="4096" initialSize="4096" autowarmCount="4096"/>
<queryResultCache class="solr.LRUCache" size="5000" initialSize="5000" autowarmCount="5000"/>
1
ответ дан 7 December 2019 в 05:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: