【问题标题】:How to use pg_search in a multi-lingual website?如何在多语言网站中使用 pg_search?
【发布时间】:2014-02-24 21:07:11
【问题描述】:

如果我很好地理解了 pg_search 文档,那么整个网站只有一个表存储“可搜索”文档,所以我的问题是:

除了按语言过滤搜索结果外,还有什么方法可以进行特定语言的搜索?我可以吗?将其编写的语言与每个“文档”一起存储,并以某种方式使用它来限制查询?

【问题讨论】:

    标签: ruby-on-rails internationalization multilingual rails-i18n pg-search


    【解决方案1】:

    我终于把我的控制器动作写成如下

    require 'will_paginate/array'
    
    def search
      @items = PgSearch.multisearch(params["search"])
      @items = @items.map { |item| item.searchable.document }.compact.uniq
      @items = @items.paginate(per_page: 5, page: params[:page])
    end
    

    其中每个可搜索模型都有一个文档属性,“决定”是否包含结果,如果包含,则选择哪个“文档”。这可以像检查它的语言一样简单:

    def document
      self if locale == I18n.locale.to_s
    end
    

    或者可以更复杂,将其“文档”属性传播到其父级,例如如果是多态注释:

    def document
      commentable.document
    end
    

    【讨论】:

    • 此解决方案不允许链接作用域,如果数据集很大,可能会非常慢和/或 CPU 密集型!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-26
    • 2013-01-17
    • 2011-07-02
    • 1970-01-01
    • 1970-01-01
    • 2022-10-30
    相关资源
    最近更新 更多