Фасет Sunspot Solr с несколькими фильтрами

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

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

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


facet_search.facet(:attribute1, :attribute2)

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

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

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

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


person Lester Celestial    schedule 07.03.2011    source источник


Ответы (1)


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

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

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

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

person Brad    schedule 08.04.2011