Текстовый поиск для Rails 3 на Heroku — Texticle vs act_as_tsearch vs act_as_indexed

Я создаю приложение Rails 3, которое будет размещено на Heroku.

Для реализации полнотекстового поиска я нашел следующие бесплатные альтернативы:

текстиль

acts_as_tsearch

acts_as_indexed

Мое приложение будет интенсивно использовать данные с большим количеством операций чтения и записи. Поиск также будет использоваться много.

Поиск будет по разным моделям.

Какой из них будет лучшим с точки зрения производительности и масштабируемости?

Есть ли другие бесплатные и лучшие альтернативы?

Что лучше выбрать IndexTank или WebSolr (которые Heroku рекомендует)?

Заранее спасибо!


person Nirav Shah    schedule 19.04.2011    source источник
comment
Я могу комментировать act_as_indexed только потому, что являюсь его разработчиком. С точки зрения масштабирования, AAI никогда не достигает согласованности с более чем одним Heroku Dyno, поскольку у них нет общей файловой системы. Это не было проблемой для большинства людей, но может быть проблемой в определенных ситуациях. Если вам нужна реальная масштабируемость на Heroku, тогда вам подойдут IndexTank и WebSolr.   -  person Douglas F Shearer    schedule 19.04.2011
comment
Спасибо Дуглас за ваш ответ. Возможно ли, что я использую act_as_indexed для начала? Когда я хочу, чтобы мое приложение масштабировалось, я переключаюсь на IndexTank или WebSolr?   -  person Nirav Shah    schedule 20.04.2011
comment
Да, это то, что я обычно рекомендую людям.   -  person Douglas F Shearer    schedule 20.04.2011
comment
Спасибо! Я действительно ценю твою помощь.   -  person Nirav Shah    schedule 20.04.2011
comment
Остальные не пробовал, но я использую Websolr, и он работает хорошо. Время от времени у них было несколько мелких проблем, но, похоже, они становятся все более надежными.   -  person Bashar Abdullah    schedule 27.07.2011
comment
Возможно, стоит рассмотреть IndexTank или WebSolr, если ваши требования к поиску больше, чем просто текст. Например, IndexTank позволяет добавлять параметры в индекс, чтобы вы могли выполнять такие действия, как геолокация результатов поиска. Если это просто текстовый поиск, то я думаю, что любой postgres FullTextSearch, вероятно, подойдет.   -  person BlueFish    schedule 08.09.2011


Ответы (4)


Вы пробовали PgSearch https://github.com/Casecommons/pg_search? Поскольку heroku использует pg, вы фактически получаете полнотекстовый поиск бесплатно, а PgSearch создает именованные области, которые используют преимущества полнотекстового поиска PostgreSQL.

person user1053134    schedule 30.11.2011

Вы можете использовать встроенный в PostgreSQL полнотекстовый поиск, но это больно, но есть жемчужины, такие как pg_search, чтобы сделать это намного проще, но у него есть некоторые серьезные проблемы, но я нашел простые обходные пути. См. https://docs.google.com/presentation/d/1NbN0kJMJsSQW2N7ItNMB6VuM_lJok-Xb0epk0anbRIo (слайды из моего молниеносного выступления под названием «Бесплатный полнотекстовый поиск на Heroku»), чтобы узнать подробности.

person davearonson    schedule 08.12.2014

Я бы рекомендовал использовать WebSollr. Это поисковая система уровня предприятия, основанная на Apache Solr, которая может обрабатывать миллионы проиндексированных документов без особых усилий. Кроме того, Solr позволяет вам определить индивидуальную структуру ваших данных, а не заставлять вас выполнять простой полнотекстовый поиск. Он предлагает дополнительные функции, такие как фасетный поиск и исправление орфографии.

Если вы не хотите платить за Solr, вы можете разместить его самостоятельно, так как он имеет открытый исходный код: http://lucene.apache.org/solr/

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

person cjm2671    schedule 05.10.2011

Heroku рекомендует использовать надстройку для обеспечения полнотекстового поиска. Это обеспечивает наилучшую производительность, масштабируемость и простоту использования вашего приложения. Есть два дополнения для полнотекстового поиска: IndexTank и Websolr.

person Luca G. Soave    schedule 27.11.2011
comment
Ссылка на Indextank больше не работает, я также не могу найти IndexTank в списке дополнений Heroku, они удалили его или изменили свое имя? Я тоже не могу зайти на их сайт. - person Cninroh; 09.11.2012