Насколько хорошо Solr масштабируется по большому количеству значений фасетов? - PullRequest
7 голосов
/ 25 мая 2010

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

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

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

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

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

Спасибо.

Ответы [ 2 ]

7 голосов
/ 25 мая 2010

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

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

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

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

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

Подводя итог:

  • Использование Solr 1,4

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

  • Навигация по пространству фасетов с помощью facet.limit / facet.offset.

1 голос
/ 28 мая 2010

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

   <filterCache class="solr.FastLRUCache" size="4096" initialSize="4096" autowarmCount="4096"/>
<queryResultCache class="solr.LRUCache" size="5000" initialSize="5000" autowarmCount="5000"/>
...