Rails 3 - Solr не ищет предметы - PullRequest
0 голосов
/ 07 марта 2012

В модели Фотография у меня есть простое правило:

  searchable do
    string :note
  end

, и я пытаюсь найти строку с Solr (одновременно в двух таблицах).Это вывод запроса Solr в терминале (первый для Articles , второй для Photos ):

Запрос SOLR (4,8 мс) [путь = # параметры = {данные: fq = тип% 3A Статья & q = искомая строка & fl =% 2A + оценка & qf = заголовок + содержимое & defType = dismax & start = 0 & rows = 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 + score & defType = dismax & start = 0 & lines = 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:}]

контроллер:

@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 не ищет в Фото модель ... все должно быть указано и настроено, но до сих пор не знаю, в чем проблема ...

Ответы [ 2 ]

1 голос
/ 07 марта 2012

Я думаю, что в модели Фото вы должны определить :note как тип text (не string), чтобы запустить полнотекстовый поиск по нему:

searchable do
  text :note
end

Кроме того, вы установите @articles и @photos, но проверяя @users и @photos в вашем вопросе.

ОБНОВЛЕНИЕ

Согласно readme солнечной точки :

"текстовые поля будут доступны для полнотекстового поиска. Другие поля (например, целочисленные и строковые) могут использоваться для охвата запросов"

То есть для запуска fulltext или keywords вэто поле должно быть объявлено как text в доступном для поиска блоке .Он имеет значение string, которое можно использовать только для точного соответствия, используя with().

Удачи.

0 голосов
/ 08 марта 2012

Рабочее решение моей проблемы: 1. остановите сервер rails 2. rake sunspot: reindex 3. запустите сервер rails

Если все изменилось в блоке searchable, то необходимо переиндексироватьданные.

...