Как я делаю полнотекстовый поиск в Ruby on Rails?

В Java все находится в форме класса.

Если вы хотите использовать любой объект, тогда у вас есть две фазы:

  1. Объявить
  2. Инициализация

Пример:

  • Объявление: Object a;
  • Инициализация: a=new Object();

То же самое для концепции массива

  • Объявление: Item i[]=new Item[5];
  • Инициализация: i[0]=new Item();

Если вы не дают секцию инициализации, тогда возникает NullpointerException.

10
задан sock 6 September 2008 в 16:51
поделиться

7 ответов

Существует несколько доступных опций, и у каждого есть различные достоинства и недостатки. Если бы требуется добавить полнотекстовый поиск, было бы благоразумно исследовать каждого немного и испытать их, чтобы видеть, как хорошо это работает на Вас в Вашей среде.

MySQL имеет встроенную поддержку полнотекстового поиска. Это имеет онлайн-поддержку, означающую, что, когда новые записи добавляются к базе данных, они автоматически индексируются и будут доступны в результатах поиска. Документация имеет больше деталей.

acts_as_tsearch предлагает обертку для подобной встроенной функциональности для последних версий PostgreSQL

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

Lucene является популярным поисковым поставщиком, записанным в Java. Можно использовать Lucene через его поисковый сервер Solr с использованием направляющих acts_as_solr.

Если Вы не хотите использовать Java, существует порт Lucene к Ruby под названием Хорек. Поддержка направляющих добавляется с помощью acts_as_ferret плагин.

Xapian является другим хорошим вариантом и поддерживается в направляющих с помощью acts_as_xapian плагин.

Наконец, моим предпочтительным вариантом является Сфинкс с помощью плагина Ультрасфинкса. Это чрезвычайно быстро и имеет много опций о том, как индексировать и искать Ваши базы данных, но активно больше не сохраняется.

Другой плагин для Сфинкса Думает Сфинкс, который имеет много позитивных откликов. Немного легче начать использовать Думающего Сфинкса, чем Ультрасфинкс. Я предложил бы исследовать оба плагина для определения который соответствия лучше с проектом.

19
ответ дан 3 December 2019 в 14:19
поделиться

Я могу рекомендовать Сфинкса. У Ryan Bates есть большой скринкаст при использовании Интеллектуального плагина Сфинкса для создания решения для полнотекстового поиска.

7
ответ дан 3 December 2019 в 14:19
поделиться

Можно использовать Хорька (который является Lucene, записанным в Ruby). Это интегрируется бесшовный с направляющими с помощью смешивания acts_as_ferret. Смотрите на, "Как Интегрировать Хорька С направляющими". Альтернатива является Сфинксом.

5
ответ дан 3 December 2019 в 14:19
поделиться

Я составлял список различных параметров поиска Ruby on Rails в этом другом вопросе. Я не уверен, как, или если объединить наши вопросы.

1
ответ дан 3 December 2019 в 14:19
поделиться

Это зависит, на какой базе данных Вы используете. Я рекомендовал бы использовать Solr, поскольку он предлагает много хороших опций. Оборотная сторона - Вы, должны выполнить отдельный процесс для него. Я использовал Хорька также, но нашел, что это менее стабильно с точки зрения многопоточного доступа к индексу. Я не попробовал Сфинкса, потому что он только работает с MySQL и Пост-ГРЭС.

1
ответ дан 3 December 2019 в 14:19
поделиться

Просто примечание для дальнейшего использования: Крайний Сфинкс больше не сохраняется. Думающий сфинкс является своей заменой. Хотя это испытывает недостаток в нескольких функциях в это время как выборка, которую имел Крайний сфинкс, это восполняет его в других функциях.

1
ответ дан 3 December 2019 в 14:19
поделиться

Я бы порекомендовал actions_as_ferret, поскольку я использую его для проекта Scrumpad на работе. Индексирование может быть выполнено как отдельный процесс, который гарантирует, что при повторном индексировании мы все еще можем использовать наше приложение. Это может сократить время простоя веб-сайта. Также поиск намного быстрее. Вы можете искать по нескольким моделям одновременно и сортировать результаты по нужным полям.

1
ответ дан 3 December 2019 в 14:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: