SOLR - Как ограничить число фасетов для строк, возвращаемых в наборе результатов - PullRequest
8 голосов
/ 28 октября 2010

/select/?q=*:*&rows=100&facet=on&facet.field=category

У меня проиндексировано около 100 000 документов.Но я возвращаю только 100 документов, используя строки = 100.Подсчет фасетов возвращается для категории, однако возвращает подсчет для всех проиндексированных документов.

Можем ли мы как-то ограничить фасеты возвращенным набором результатов?т.е. только 100 строк?

Ответы [ 4 ]

5 голосов
/ 29 июня 2011

Я не думаю, что это возможно каким-либо прямым образом, как указал Паскаль.

Я вижу два способа добиться этого:

  1. Метод I: подсчитайте сами, посетив 100 возвращенных результатов. Это очень легко и быстро, если они являются категориальными полями, но сложнее, если они являются текстовыми полями, которые необходимо маркировать и т. Д.

  2. Метод II: сделать два прохода:

    1. Выполните обычный запрос без фасетов (вам нужно только запросить идентификаторы документов)
    2. Соберите все идентификаторы возвращенных документов
    3. Сделайте второй запрос для всех полей и фасетов, добавив фильтр для ограничения результата теми идентификаторами, которые собраны в setp 2. Что-то вроде: <br> select/?q=<em>:</em>&facet=on&facet.field=category&fq=id:(312 OR 28 OR 1231 ...)

Первый способ более эффективен, и я бы порекомендовал его для нетекстовых полей. Второй вычислительно дорог, но имеет преимущество работы для всех типов полей od.

1 голос
/ 29 октября 2010

Извините, но я не думаю, что это возможно. Фасеты всегда основаны на всех документах, соответствующих запросу.

0 голосов
/ 15 ноября 2010

Если вы всегда выполняете один и тот же запрос (q=*:*), возможно, вы можете использовать facet.limit, например:

select/?q=*:*&rows=100&facet=on&facet.field=category&facet.limit=100

Сообщите нам, является ли порядок, используемый Solr, таким же, как в фасетезапрос : .

0 голосов
/ 03 ноября 2010

Не реальный ответ, но, возможно, лучше, чем ничего: функция группировки результатов (извлечение из транка!):

http://wiki.apache.org/solr/FieldCollapsing

, где facet.field = category тогда аналогичнаgroup.field = категория, и вы получите столько групп («фазовых попаданий»), сколько вы указали!

...