【发布时间】:2012-01-30 16:07:53
【问题描述】:
我在 Heroku 上有一个 Rails 应用程序,我希望提高搜索的用户友好性。为此,我想允许他们通过关联在多个模型上的多个字段中进行文本搜索。来自用户的输入可以是来自任何这些字段的文本(通常可能跨越多个字段),没有特定的顺序。
示例:如果您有一个汽车数据库并希望允许用户搜索“Honda Fit 2011”,其中“Honda”来自制造商表,“Fit”来自模型表,“2011”来自model_year 表。
我想我需要在根记录上构建一个字段,其中包含每个字段的唯一单词列表,然后标记用户的输入。但这会导致我使用IN 子句,我不确定它是否可以从pg_search 等全文搜索插件中受益。
那么,我的问题是在 Rails 中激活这样的搜索的好方法是什么?
【问题讨论】:
-
对所有模型进行全文搜索并不能解决您的问题?
-
全文搜索通常是您交给外部工具的任务。你可能想看看 solr/lucene、sphinx 或弹性搜索。
-
@Tass 跨多个模型的全文,如果我没记错的话,总是会从不同的表中返回项目。我可能不清楚:在我的汽车示例中,我总是想返回 model_year 记录。因此,搜索“honda”将带回通过关联可以追溯到“honda”制造商的所有 model_years。
标签: ruby-on-rails activerecord heroku full-text-search