Нужно организовать выборку определенных пользователей из БД (проживающих в определенном городе, имеющих определенный тип аккаунта на сайте).
Установил gem 'thinking-sphinx'.
При поиске в консоли 'search -a Москва' выдает выборку правильно, но русские символы не печатает, вместо них знаки вопроса, хотя проставлено и в базе и в настройках utf-8.
Далее... В модель user.rb добавил:
define_index do
# fields
indexes name, :sortable => true
indexes region
# attributes
has created_at, updated_at
end
Не знаю, правильно ли это, со сфинксом не работал еще.
В users_helper.rb добавил:
def can_help?(user)
sphinx = Sphinx.new
sphinx.set_match_mode(Sphinx::SPH_MATCH_ANY)
result = sphinx.query('Москва')
# Получить соответствующие объекты модели
ids = result[:matches].map { |id, value| user.id }.join(',')
can_help = User.find :all, :conditions => "id IN (#{ids})"
# Получить выдержки
docs = can_help.map { |user| user.name }
excerpts = sphinx.build_excerpts(docs, 'index', 'Москва')
end
В представлении вывожу: <%= can_help?(@user) %>
В итоге получаю: uninitialized constant UsersHelper::Sphinx
ЧЯДНТ? Почему Rails считает это константой, и не создает объект для нового поиска?
RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.
Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.
Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.