Как упоминает RocketR, это простой случай использования Sunspot.
Сначала используйте Sunspot, чтобы указать, что у вас есть три поля для индексации в виде текста.
class Article < ActiveRecord::Base
searchable do
text :name
text :description
text :notes
end
end
Затем выполните поиск, скорее всего, внутри действия контроллера. Приведенный ниже объект @search
содержит метаданные о поисковом ответе, включая соответствующие объекты по его методу results
.
@search = Article.search do
keywords query
end
@results = @search.results
Чтобы найти другие документы, похожие на уже загруженный объект, например, в действии show
, вы можете вызвать метод экземпляра more_like_this
. Это особый вид поиска, который использует функциональность Solr «More Like This» и возвращает поисковый объект, аналогичный полнотекстовому поиску, описанному выше. Вы можете использовать его метод results
, чтобы отобразить результаты этого поиска.
<%= render @article.more_like_this.results %>
Метод more_like_this также принимает блок с параметрами, аналогичными поисковому блоку, поэтому вы можете лучше контролировать то, как вы оцениваете сходство.
Надеюсь, это поможет!