2
我使用pg_search進行全文搜索,當我輸入搜索詞時它工作正常,但是當我給它一個空字符串時,我期望它返回所有模型,而不會得到任何結果。pg_search_scope與空字符串
如何配置pg_search_scope以返回空搜索的所有模型?
謝謝
我使用pg_search進行全文搜索,當我輸入搜索詞時它工作正常,但是當我給它一個空字符串時,我期望它返回所有模型,而不會得到任何結果。pg_search_scope與空字符串
如何配置pg_search_scope以返回空搜索的所有模型?
謝謝
這裏是我的回答從https://github.com/Casecommons/pg_search/issues/49
我不認爲有一個空的查詢應該始終觸發的所有記錄,爲一對夫婦的原因。
首先,我不認爲有一個明確的,以在返回的記錄。(通常通過排序搜索排名是毫無意義的查詢)
其次,我認爲,數據庫應界定各種搜索功能如何處理空白字符串,以便所有邏輯只存在於一個地方。
所以,我想提供這種解決方法,我認爲這會對您的情況更好地解決問題。
class MyModel < ActiveRecord::Base
include PgSearch
pg_search_scope :search_by_name, :against => :name
def self.search(query)
if query.present?
search_by_name(query)
else
# No query? Return all records, newest first.
order("created_at DESC")
end
end
end
這個解決方案應該仍然是可鏈接的,所以你可以安全地調用您的控制器是這樣的(假設你使用分頁庫像雷。
MyModel.where(:published => true).search(params[:query]).page(params[:page])
我需要這個功能還什麼我所做的只是使用'scoped'來返回pg_search創建的Document表中的所有記錄,但我不確定pg_search_scope是否使用這個表,我相信它只有在你的模型中使用'multisarchable'時纔會使用(用於搜索多個模型同時)如果是這樣,那麼你可以使用'PgSearch :: Document.scoped'來獲取所有記錄 – FireDragon 2014-04-03 05:03:15