Pg文本搜索~PG :: UndefinedColumn:错误:列documents.content不存在

时间:2015-07-28 09:45:33

标签: ruby-on-rails postgresql ruby-on-rails-4 pg-search

我正在将postgresql文本搜索发送到我的应用程序中。当我搜索特定项目时,我收到错误。

  

SELECT COUNT(*)FROM" documents" INNER JOIN(SELECT" documents"。" id"   AS pg_search_id,(ts_rank((to_tsvector(' english',   合并("文件"。"标题" ::文字,''))|| to_tsvector('英语&#39 ;,   合并("文件"。"内容" ::文字,''))),(to_tsquery('英文',   ''' ' || '咖啡' || ' '')),0))AS等级来自"文件"哪里   ((to_tsvector(' english',coalesce(" documents"。" title" :: text,''))||   to_tsvector('英语',合并("文档"。"内容" ::文字,''))@@   (to_tsquery('英语',''' ||'咖啡' ||''&# 39;')))))   pg_search_documents ON"文件"。" id" =   pg_search_documents.pg_search_id

在我的文档模型中

   include PgSearch
    pg_search_scope :search, :against => [:title, :content],
    :using => {tsearch: {dictionary: "english"}}

  def self.text_search(query)
    if query.present?
     search(query)
    else
     all
  end
 end

在我的文档控制器中

  def load_documents
    @documents = documents_scope.all.text_search(params[:query])
  end

我的数据库如何在控制台中连线

Document(id:uuid,category_id:uuid,title:string,created_at:datetime,updated_at:datetime,version_id:uuid)

DocumentVersion(id:uuid,document_id:uuid,document_version_id:uuid,user_id:uuid,title:string,content:text,created_at:datetime,updated_at:datetime

它与表连接有关,但我不知道如何解决它。谢谢你的帮助。

2 个答案:

答案 0 :(得分:0)

得到它,在我的模型中,我需要通过assosciations范围

$("select[name=customer]").select2({
    allowClear : true,
    placeholder : "Choose customer",
    ajax : {
        url : "/search/autocomplete/get_customers",
        dataType : 'json',
        type : "GET",
        quietMillis : 50,
        delay : 250,
        success: function(){
            test();
        },
        data : function(params) {
            return {
                filter : params.term
            };
        },
        processResults : function(data) {
            return {
                results : $.map(data, function(item) {
                    return {
                        text : item.name + ' (' + item.customer_code + ')',
                        id : item.id
                    }
                })
            };
        },
        initSelection : function (element, callback) {
              var data = [];
              $(element.val()).each(function () {
                data.push({id: this, text: this});
              });
              callback(data);
        }
    }
});

答案 1 :(得分:0)

通常当Postgres认为某列中的数据本身是一列时,这是因为数据是用双引号引用的......将双引号更改为单引号可以缓解这个问题但是你的代码也有点过了令人费解的复制...... select * from <table> where user_id = "e15bde2-6f4b-4299-9e64-82116c719636"; ......会导致这个问题,而: select * from <table> where user_id = 'e15bde2-6f4b-4299-9e64-82116c719636'; ...不会。