Текстовый поиск по полям в Rails с учетом производительности - PullRequest
0 голосов
/ 30 января 2012

У меня есть приложение Rails на Heroku, которое я ищу, чтобы повысить удобство поиска.Для этого я хотел бы разрешить им текстовый поиск по нескольким полям на нескольких моделях с помощью ассоциаций.Вводимые пользователем данные могут представлять собой смесь текста из любого из этих полей (и часто могут занимать несколько полей) в произвольном порядке.

Пример: если у вас есть автомобильная база данных и вы хотите позволить пользователюпоиск «Honda Fit 2011», где «Honda» пришла из таблицы производителя, «Fit» - из таблицы модели, а «2011» - из таблицы model_year.

Я думаю, что мне нужносоздайте единственное поле в корневой записи, содержащее уникальный список слов из каждого из этих полей, а затем токенизируйте ввод пользователя.Но это заставило бы меня использовать предложение IN, которое, я не уверен, могло бы выиграть от плагинов полнотекстового поиска, таких как pg_search .

Итак, мой вопрос в том, что хорошоспособ активировать подобный поиск в Rails?

1 Ответ

0 голосов
/ 30 января 2012

Я бы взглянул на Sunspot_rails.Он использует Solr в качестве поисковой системы, но позволяет индексировать контент различными способами.Например, у меня есть модели, индексированные по их ассоциациям довольно просто:

searchable do
  text :description
  text :category do
    category.present? ? category.name : ''
  end
end

Затем вы можете искать с помощью:

TYPES = [Asset,Product]

Sunspot.search(*TYPES) do |q|
  q.fulltext search_str
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...