Rails 3 - Solr не ищет предметы
В модели Photo у меня есть следующее простое правило:
searchable do
string :note
end
и я пытаюсь найти строку с Solr (одновременно в двух таблицах). Это вывод запроса Solr в терминале (первый для статей, второй для фотографий):
Запрос SOLR (4,8 мс) [путь =# параметры ={данные: fq= тип%3A Статья &q= искомая_строка &fl=%2A+ оценка &qf= заголовок + контент &defType=dismax&start=0&row = 30, метод: post, params: {:wt=>:ruby}, запрос: wt=ruby, заголовки: {"Content-Type"=>"application/x-www-form-urlencoded; charset=UTF-8"}, путь: выберите, uri: http://localhost:8982/solr/select?wt=ruby, open_timeout:, read_timeout:}]
и это
Запрос SOLR (4,4 мс) [путь =# параметры ={данные: fq= тип%3A Фото &q=asgasg&fl=%2A+ оценка &defType=dismax&start=0&row = 30, метод: post, params: {:wt=>:ruby}, query: wt=ruby, headers: {"Content-Type"=>"application/x-www-form-urlencoded; charset=UTF-8"}, путь: выберите, uri: http://localhost:8982/solr/select?wt=ruby, open_timeout:, read_timeout:}]
контроллер:
@articles = Article.search do
fulltext params[:search]
end
@photos = Photo.search do
fulltext params[:search]
end
## => searching ##
puts @articles.results #work fine
puts @photos.results #always 0
Я совершенно не знаю, почему SOLR не ищет в модели Photo... все должно быть указано и настроено, но все еще не знаю, в чем проблема...
2 ответа
Я думаю, что в модели фото вы должны определить :note
как text
тип (не string
) чтобы запустить на нем полнотекстовый поиск:
searchable do
text :note
end
Кроме того, вы установили @articles
а также @photos
но проверяю @users
а также @photos
в вашем вопросе.
ОБНОВИТЬ
Согласно солнечному пятну readme:
"текстовые поля будут доступны для полнотекстового поиска. Другие поля (например, целое и строковое) могут использоваться для определения объема запросов"
То есть бежать fulltext
или же keywords
на этом поле, он должен быть объявлен как text
в поисковом блоке. У вас это как string
, который можно использовать только для точного соответствия with()
,
Удачи.
Рабочее решение моей проблемы: 1. остановить сервер rails 2. rake sunspot:reindex 3. запустить сервер rails
Если все изменилось в searchable
блок, затем необходимо переиндексировать данные.