Sunspot теги индексации и поиска возвращают все

Я использую act_as_taggable_on для тегирования в наших проектах, вместе с sunspot / solr для поиска.

Получаем странный неожиданный результат. Сначала наша установка (краткая версия):

Модель:

Class Person
  has_many :projects

  searchable do
    string :project_tags, :multiple => true do
      projects.map { |p| p.tag_list}.flatten
    end
  end

Taglist - это метод из act_as_taggable_on, который возвращает массив тегов для каждого проекта (fe ["foo", "bar"]). Мы индексируем теги проекта для участников проекта.

Когда в нашем контроллере мы делаем:

Person.search() do
   with(:project_tags).any_of(params[:tags])
end

Это возвращает нужных людей. Пока все хорошо.

Проблема
Мы хотим иметь возможность искать по нескольким тегам. Итак, в соответствии с инструкциями по солнечным пятнам мы передаем массив. Код выглядит примерно так:

@tags_array= params[:tags].split(/ /)
Person.search() do
   with(:project_tags).any_of(@tags_array)
end

Теперь Sunspot дает нам каждого человека в результате, независимо от того, какие теги мы используем! Мы как сумасшедшие тестировали это на консоли, но не могли понять, где мы ошибаемся.

Любая помощь будет принята с благодарностью!

Получаем странный неожиданный результат. Сначала наша установка (краткая версия):

Модель:

Class Person
  has_many :projects

  searchable do
    string :project_tags, :multiple => true do
      projects.map { |p| p.tag_list}.flatten
    end
  end

Taglist - это метод из act_as_taggable_on, который возвращает массив тегов для каждого проекта (fe ["foo", "bar"]). Мы индексируем теги проекта для участников проекта.

Когда в нашем контроллере мы делаем:

Person.search() do
   with(:project_tags).any_of(params[:tags])
end

Это возвращает нужных людей. Пока все хорошо.

Проблема
Мы хотим иметь возможность искать по нескольким тегам. Итак, в соответствии с инструкциями по солнечным пятнам мы передаем массив. Код выглядит примерно так:

@tags_array= params[:tags].split(/ /)
Person.search() do
   with(:project_tags).any_of(@tags_array)
end

Теперь Sunspot дает нам каждого человека в результате, независимо от того, какие теги мы используем! Мы как сумасшедшие тестировали это на консоли, но не можем понять, где мы ошибаемся.

Любая помощь будет признательна!

Получаем странный неожиданный результат. Сначала наша установка (краткая версия):

Модель:

Class Person
  has_many :projects

  searchable do
    string :project_tags, :multiple => true do
      projects.map { |p| p.tag_list}.flatten
    end
  end

Taglist - это метод из act_as_taggable_on, который возвращает массив тегов для каждого проекта (fe ["foo", "bar"]). Мы индексируем теги проекта для участников проекта.

Когда в нашем контроллере мы делаем:

Person.search() do
   with(:project_tags).any_of(params[:tags])
end

Это возвращает нужных людей. Пока все хорошо.

Проблема
Мы хотим иметь возможность искать по нескольким тегам. Итак, в соответствии с инструкциями по солнечным пятнам мы передаем массив. Код выглядит примерно так:

@tags_array= params[:tags].split(/ /)
Person.search() do
   with(:project_tags).any_of(@tags_array)
end

Теперь Sunspot в результате дает нам каждому человеку, независимо от того, какие теги мы используем! Мы как сумасшедшие тестировали это на консоли, но не могли понять, где мы ошибаемся.

Любая помощь будет принята с благодарностью!

Class Person
  has_many :projects

  searchable do
    string :project_tags, :multiple => true do
      projects.map { |p| p.tag_list}.flatten
    end
  end

Taglist - это метод из act_as_taggable_on, который возвращает массив тегов для каждого проекта (fe ["foo", "bar"]). Мы индексируем теги проекта для участников проекта.

Когда в нашем контроллере мы делаем:

Person.search() do
   with(:project_tags).any_of(params[:tags])
end

Это возвращает нужных людей. Пока все хорошо.

Проблема
Мы хотим иметь возможность искать по нескольким тегам. Итак, в соответствии с инструкциями по солнечным пятнам мы передаем массив. Код выглядит примерно так:

@tags_array= params[:tags].split(/ /)
Person.search() do
   with(:project_tags).any_of(@tags_array)
end

Теперь Sunspot дает нам каждого человека в результате, независимо от того, какие теги мы используем! Мы как сумасшедшие тестировали это на консоли, но не можем понять, где мы ошибаемся.

Любая помощь будет признательна!

Class Person
  has_many :projects

  searchable do
    string :project_tags, :multiple => true do
      projects.map { |p| p.tag_list}.flatten
    end
  end

Список тегов - это метод из act_as_taggable_on, который возвращает массив тегов для каждого проекта (например, ["foo", "bar"]). Мы индексируем теги проекта для участников проекта.

Когда в нашем контроллере мы делаем:

Person.search() do
   with(:project_tags).any_of(params[:tags])
end

Это возвращает нужных людей. Пока все хорошо.

Проблема
Мы хотим иметь возможность искать по нескольким тегам. Итак, в соответствии с инструкциями по солнечным пятнам мы передаем массив. Код выглядит примерно так:

@tags_array= params[:tags].split(/ /)
Person.search() do
   with(:project_tags).any_of(@tags_array)
end

Теперь Sunspot дает нам каждого человека в результате, независимо от того, какие теги мы используем! Мы как сумасшедшие тестировали это на консоли, но не можем понять, где мы ошибаемся.

Любая помощь будет признательна!
Мы индексируем теги проекта для участников проекта.

Когда в нашем контроллере мы делаем:

Person.search() do
   with(:project_tags).any_of(params[:tags])
end

Это возвращает нужных людей. Пока все хорошо.

Проблема
Мы хотим иметь возможность искать по нескольким тегам. Итак, в соответствии с инструкциями по солнечным пятнам мы передаем массив. Код выглядит примерно так:

@tags_array= params[:tags].split(/ /)
Person.search() do
   with(:project_tags).any_of(@tags_array)
end

Теперь Sunspot в результате дает нам каждому человеку, независимо от того, какие теги мы используем! Мы как сумасшедшие тестировали это на консоли, но не могли понять, где мы ошибаемся.

Любая помощь будет принята с благодарностью!
Мы индексируем теги проекта для участников проекта.

Когда в нашем контроллере мы делаем:

Person.search() do
   with(:project_tags).any_of(params[:tags])
end

Это возвращает нужных людей. Пока все хорошо.

Проблема
Мы хотим иметь возможность искать по нескольким тегам. Итак, в соответствии с инструкциями по солнечным пятнам мы передаем массив. Код выглядит примерно так:

@tags_array= params[:tags].split(/ /)
Person.search() do
   with(:project_tags).any_of(@tags_array)
end

Теперь Sunspot дает нам каждого человека в результате, независимо от того, какие теги мы используем! Мы как сумасшедшие тестировали это на консоли, но не можем понять, где мы ошибаемся.

Любая помощь будет признательна!

@tags_array= params[:tags].split(/ /)
Person.search() do
   with(:project_tags).any_of(@tags_array)
end

Теперь Sunspot дает нам каждому человеку в результате, независимо от того, какие теги мы используем! Мы как сумасшедшие тестировали это на консоли, но не могли понять, где мы ошибаемся.

Любая помощь будет принята с благодарностью!

@tags_array= params[:tags].split(/ /)
Person.search() do
   with(:project_tags).any_of(@tags_array)
end

Теперь Sunspot дает нам каждого человека в результате, независимо от того, какие теги мы используем! Мы как сумасшедшие тестировали это на консоли, но не можем понять, где мы ошибаемся.

Любая помощь будет признательна!
Эрвин

10
задан lulalala 7 March 2014 в 09:10
поделиться