Добавление поиска в Ruby on Rails - простой вопрос - PullRequest
2 голосов
/ 19 ноября 2009

Я пытаюсь выяснить, как добавить поиск в мое приложение rails. Я новенькая, так что иди медленно. Я создал блог и сделал немало настроек, включая добавление AJAX, до сих пор очень гордый собой. У меня проблемы с поиском каких-либо хороших руководств о том, как добавить эту функцию. По сути, я просто хочу включить полный поиск для поиска в моей таблице сообщений. Какой самый простой способ сделать это?

Ответы [ 4 ]

6 голосов
/ 19 ноября 2009

Есть отличный Railscast на Thinking Sphinx , который мой любимый среди других упомянутых вариантов. Это быстро, просто и постоянно развивается .

Также есть SearchLogic , что замечательно, если вам действительно не нужна полнотекстовая индексация (вероятно, нет для блога). И Railscast , чтобы согласиться с этим.

5 голосов
/ 19 ноября 2009

В зависимости от используемой СУБД может существовать встроенное решение для полнотекстового поиска.

В противном случае вы можете проверить Sunspot (и плагин Rails ), который использует Apache Solr для полнотекстового поиска и прост в использовании. Особенно написание запросов / поисков гораздо веселее, чем со стандартным плагином acts_as_solr.

Редактировать О, и вот скринкаст на Солнечном пятне для визуальных людей .

3 голосов
/ 19 ноября 2009

Я бы предложил использовать плагин acts_as_solr . Я только начинаю с Rails, и это плагин индексации поиска, рекомендованный моим профессором. Он включает поисковую систему SOLR в плагин. Сайт содержит инструкции по установке и использованию.

По сути, как показывает использование, вы просто включили бы тэг act_as_solr в любую модель, которую хотите найти, а затем укажите, какие атрибуты в вашей модели вы хотите индексировать для поиска ... что-то вроде:

class Post < ActiveRecord::Base
    acts_as_solr :fields => [:post, :comments, :whatever]

И для поиска вы бы сделали что-то вроде ...

    Post.find_by_solr(query_string)
0 голосов
/ 19 ноября 2009

Самый простой способ сделать это - сделать что-то вроде этого:

results = Post.find (: all,: условие => "post_body LIKE '% # {search_string}%'")

Однако это довольно ограничено в том смысле, что он будет искать только точное слово или фразу, которую вы ищете (не говоря уже об уязвимости для SQL-инъекций). Как я уже говорил, это «самый простой» способ поиска, но определенно не самый лучший. Я хотел бы изучить использование act_as_solr, если вы хотите сделать это серьезно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...