2013-12-12 3 views
1

Когда я группирую или фасет в solr на основе поля, я получаю только количество документов, которые находятся в результатах поиска. Есть ли способ получить количество документов, которые содержат это значение по всему индексу? Например, с этими данными я бы хотел поискать «что-то» и вернуть только один элемент в уникальное поле gs со счетом всех полей в индексе. Так идентификатор 2 будет придумать, как и сгруппированы по гсу 50005, но граф был бы 2 вместо 1.solr группировка на основе всех значений индекса

<doc> 
<field name="id">1</field> 
<field name="gs">50005</field> 
<field name="text">blah</field> 
</doc> 

<doc> 
<field name="id">2</field> 
<field name="gs">50005</field> 
<field name="text">something else</field> 
</doc> 

<doc> 
<field name="id">3</field> 
<field name="gs">123</field> 
<field name="text">another something value</field> 
</doc> 

<doc> 
<field name="id">4</field> 
<field name="gs">5423</field> 
<field name="text">something entirely different</field> 
</doc> 
+0

использовать 'facet.query' .. как' facet.query = gs: 50005', вы получите внешний вид '50005' всего индекса –

+0

Привет, как я могу получить этот счет для каждого документа в результатах? – user2630270

+0

У вас есть запрос с указанными выше параметрами? –

ответ

1

У меня есть работа вокруг: са {присоединиться с = гс к = Gs!}: Поле (гс) текст: что-то & группа = истинные & group.field = Gs

По существу, способ это работает запрос расширяется через объединение, чтобы включить все элементы, которые имеют эти же gs, а затем сгруппированы по gs. Через группировку у меня есть значение в XML, сколько элементов в группе.

Не очень элегантный, но должен сделать трюк.

1

Для моих знаний нет. Почему бы вам не добавить их на основе фактов в вашем клиентском коде?

+0

Это вариант, которого мы хотели бы избежать. Даже с подсчетами граней, я получал бы только подсчеты для набора результатов, а не по всему индексу. – user2630270

+0

Единственный способ, с помощью которого вы можете получить индекс, - это разделить отдельный запрос с помощью *: *, чтобы получить чистые грани, задав строки 1. Поскольку «ответ запроса», очевидно, включает обработку параметра q. Solr работает через компоненты обработчика и обработчика, выполняются в порядке, используя компонент запроса, квалифицированный как docset. – Arun

+0

Привет, Арун, спасибо. Я также играл с функцией для возврата счетчика, но не могу заставить его работать. Работает жесткое кодированное значение fl = docfreq (gs, field (gs)), а поле (gs) работает отдельно, но они не работают вместе :( – user2630270

Смежные вопросы