2013-12-16 2 views
1

Я работаю над грани для результата поиска solr. У меня возникли проблемы с получением граней, чтобы показать, как я их хочу. Я хотел бы иметь возможность выбрать значение в одной фасете и обновлять только числа в других гранях, не принимая значений, когда количество фасетов равно 0.
Пример Я сделал поиск рубашки, и вот грани, которые возвращаются с их подсчетов:Solr Multi Select Facting игнорируя другие выбранные грани

цвет:
[] Красный (10)
[] Blue (10)
[] Зеленый (10)

Размер:
[] Малый (5)
[] Средний (10)
[] Большой (10)

Теперь, если я выбираю красный цвет, я хочу, чтобы мои фасеты обновлять как таковой:

Цвет:
[х] Красный (10)
[] Синий (10)
[] Зеленый (10)

Размер:
[] Малый (0)
[] Medium (5)
[] Большой (5)

У меня он работает так, что выбор цвета не ограничивает параметры в цветовой фасции, но я не могу понять, как получить правильные грани для отображения размера, путем настройки исключений я либо получаю:

Размер:
[] Средний (5)
[] Large (5)
или:
Размер:
[] Малый (5)
[] Medium (10)
[] Большой (10)

Я попытался добавить facet.limit = -1, но он не видит m сделать что-нибудь, может быть, ошибка, поскольку я ожидал, что это будет делать то, что я искал? Я запускаю solr 4.3.1.

Вот мой запрос: {! Ех = colortag}
д = стул & рядов = 10 & старт = 0 & facet.limit = -1 & defType = edismax & facet.field = цвет & facet.field = размер & фаска = истинный & FQ = цвет {ех = sizetag!} {тег = colortag!}: красный & фл = *, оценка

возможно ли это с Solr? Я не встречал никаких примеров этого, и я волнуюсь, что решение будет заключаться в том, чтобы обработать его на передней панели с кешированием, которое не будет работать.

Редактировать

Так я добавил facet.mincount = 0, который сделал и не дал мне то, что я хотел. Проблема в том, что с установкой mincount на 0 теперь я получаю все грани, которые не являются частью результата поиска.Так вот что я хочу:

Цвет:
[х] Красный (10)
[] Blue (10)
[] Зеленый (10)

Размер:
[] Малый (0)
[] Medium (5)
[] Большой (5)

но то, что я на самом деле получаю:

Цвет:
[х] Красный (10)
[] Blue (10)
[] Зеленый (10)
[] Оранжевый (0)
[] Фиолетовый (0)
[] Розовый (0)

Размер:
[] Малый (0)
[] Medium (5)
[] Большой (5)
[] X-Large (0)
[] XX-Large (0)

Итак, теперь я добавил цвета и размеры, не соответствующие запросу. Я понимаю, что он работает правильно, но я не хочу, чтобы он работал. Есть ли другой подход, который я могу принять. Я понимаю, что могу сделать один звонок, чтобы получить начальные результаты без каких-либо выделенных граней, а затем сделать второй вызов, чтобы получить отфильтрованные грани, а затем сравнить и построить правильный результат. Я бы предпочел не делать двойной звонок, поэтому любая помощь была бы оценена.

+0

решение, которое вы использовали собственно, просто используйте 'facet.mincount = 0 'или другие значения, чтобы получить значение грани с этим счетчиком, и если вам не нужно исключать размер, вы должны удалить исключение на грани размера –

ответ

1

Не исключайте для грани size, используйте facet.mincount=0 с facet.limit

q=chair&rows=10&start=0&facet.limit=-1&defType=edismax&facet.field={!ex=colortag}color&facet.field=size&facet=true&fq={!tag=colortag}color:red&fl=*,score 
Смежные вопросы