Sunspot Solr фасет с несколькими фильтрами - PullRequest
4 голосов
/ 07 марта 2011

В sunspot solr мы можем группировать записи с похожими атрибутами через фасеты. Но возможно ли сделать фасетный фильтр из двух атрибутов?

Я попытался сделать это в моем поиске:

facet_search = User.search do
  facet :attribute1, :attribute2
end


facet_search.facet(:attribute1, :attribute2)

При этом я продолжаю получать нулевые значения и уверен, что есть записи с похожими значениями в attribute1 и attribute2.

Допустим, есть две записи, у которых в атрибуте 1 значения «оранжевые». И эти две записи имеют значения в attribute2 как "орлы".

Есть ли в sunspot функция, которую я мог бы использовать для группировки записей по двум столбцам и как мне это сделать?

Заранее спасибо за помощь.

1 Ответ

6 голосов
/ 08 апреля 2011

Вы действительно хотите фильтровать?Faceting просто возвращает верхнее число уникальных значений для этого атрибута.Так что если бы атрибут1 содержал цвета, вы бы получили оранжевый, красный, синий и т. Д. Любой уникальный цвет, который соответствует вашему текущему поиску.Одна только огранка не фильтрует результаты вашего поиска.

Исходя из вашего вопроса, я думаю, что вы хотите фильтровать по некоторому значению в attribute1 И некоторому значению в attribute2.Для этого ваш поиск будет выглядеть примерно так:

facet_search = User.search do
  # Filter my results...
  with(:attribute1).equal_to("orange")
  with(:attribute2).equal_to("eagle")
end

Вы все равно можете включить facet :attribute1, если хотите получить уникальные значения attribute1 для отображения в вашем пользовательском интерфейсе или чем-то еще.Просто отметьте, что объявление: attribute1 в качестве фасета не накладывает фильтр на поиск.

...