Использование Rails Sunspot Как найти первичные ключи, которые соответствуют возвращенным фасетам? - PullRequest
0 голосов
/ 24 ноября 2011

Мне интересно, есть ли какой-нибудь простой способ получить первичные ключи объектов, которые способствуют побочному результату.

Другими словами, если search.facet(....).rows.first возвращает FacetRow, могу ли я получить от этого объекта подмножество search.hits, которые способствуют этому FacetRow? Если есть совершенно другой способ, пожалуйста, дайте мне знать.

Примечание. Чтобы получить общее представление о моей проблеме (которую, я думаю, вы, вероятно, уже получили), я хочу перейти к объектам, на которые рассчитан фасет.

Заранее спасибо

1 Ответ

1 голос
/ 24 ноября 2011

FacetRow не содержит фактических результатов поиска, оно содержит количество объектов в текущем наборе результатов, которые содержат рассматриваемый FacetRow.

Чтобы получить фактические результаты, т. Е. Для «детализации», вам нужно выполнить другой поиск, добавив соответствующий фасет к запросу, который содержит FacetRow.

Ниже приведен пример кода, описывающего, что я имею в виду. Обратите внимание, мой пример использует фасет под названием «кухни» из моего собственного проекта. Эта строка будет тем, чем является ваш конкретный аспект. В моей собственной реализации этот фрагмент частично отображается в итераторе фасетов, поэтому он повторяется для каждого фасета. @searchResponse - это возвращение Model.search:

  <% for row in @searchResponse.facet('cuisines').rows %>
    <%= link_to(row.instance.name, request.request_uri, facet + '[]=' + row.value.to_s ) %> (<%= row.count %>)</li>
  <% end %>
...