2015-07-28 97 views
0

我正在實施postgresql文本搜索到我的應用程序。當我搜索特定項目時,我收到錯誤。 UUID,CATEGORY_ID:UUIDPg文本搜索〜PG :: UndefinedColumn:錯誤:列documents.content不存在

SELECT COUNT(*) FROM "documents" INNER JOIN (SELECT "documents"."id" AS pg_search_id, (ts_rank((to_tsvector('english', coalesce("documents"."title"::text, '')) || to_tsvector('english', coalesce("documents"."content"::text, ''))), (to_tsquery('english', ''' ' || 'coffee' || ' ''')), 0)) AS rank FROM "documents" WHERE (((to_tsvector('english', coalesce("documents"."title"::text, '')) || to_tsvector('english', coalesce("documents"."content"::text, ''))) @@ (to_tsquery('english', ''' ' || 'coffee' || ' '''))))) pg_search_documents ON "documents"."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 

怎麼我的數據庫在控制檯

文件(ID有線,title:string,created_at:datetime,updated_at:datetime,version_id:uuid)

DocumentVersion(ID:UUID,DOCUMENT_ID:UUID,document_version_id:UUID,USER_ID:UUID,標題:字符串,內容:文字,created_at:日期時間,的updated_at:日期時間

它是與表連接,但我不知道如何解決它。謝謝你的幫助。

回答

0

得到它,在我的模型我通過assosciations

include PgSearch 
    pg_search_scope :search, associated_against: { 
    current_version: %i(title content) 
    } 
0

通常當Postgres的認爲在一列數據是列本身,這是因爲數據是在雙引號中被引用需要範圍.. 。將雙引號更改爲單引號將緩解此問題,但是您的代碼太複雜以至於無法複製... select * from <table> where user_id = "e15bde2-6f4b-4299-9e64-82116c719636"; ...將導致此問題,而: select * from <table> where user_id = 'e15bde2-6f4b-4299-9e64-82116c719636'; ...不會。

相關問題