下面的查詢工作就像一個魅力:太陽黑子Solr的全文檢索和will_paginate
@styles = Style.search { fulltext params[:q] }
我遇到的問題是與分頁。下面是分頁相同的查詢:
@styles = Style.search { fulltext params[:q]; paginate :page => params[:page], :per_page => params[:page_limit] }
我有11個Style
記錄。
如果我有:page => 1
和:per_page => 10
當我搜索了11的記錄,我得到一個空數組返回@styles.results
如果我設置:page=>2
,做同樣的搜索,我得到了第11屆的風格記錄。
[11] pry(#<StylesController>)> params[:page]=2
=> 2
[12] pry(#<StylesController>)> x=Style.search {fulltext params[:q]; paginate :page => params[:page], :per_page => params[:page_limit] }
=> <Sunspot::Search:{:fq=>["type:Style"], :q=>"hel", :fl=>"* score", :qf=>"name_textp full_name_textp", :defType=>"dismax", :start=>10, :rows=>10}>
[13] pry(#<StylesController>)> x.results
=> [#<Style id: 15...>]
我認爲點是分頁的搜索結果,而不是實際的記錄全部
這是怎麼回事,我該如何解決?
編輯
好吧,讓我試試解釋這個法子。比方說,我有這六個記錄:
1 => 'a'
2 => 'b'
3 => 'c'
4 => 'd'
5 => 'e'
6 => 'f'
比方說,我嘗試搜索「F」
Letter.search { fulltext 'f'; paginate :page => 1, :per_page => 5 }
我的結果將是一個空數組[]
現在讓我們假設我嘗試
Letter.search { fulltext 'f'; paginate :page => 1, :per_page => 6 }
現在我的結果是[6 =>'f']
的解釋是有點混亂給我。你可以把「當它像魅力一樣工作」的結果,取決於你的默認頁面大小,它可能是完全不同的。從你顯示的數據看來,一切似乎都有道理。你認爲什麼是錯的? – polmiro
我猜你的參數不是你想象的那樣。你能輸出你的結果沒有神祕的params? – mathieugagne
你如何索引你的模型?全文不是不可思議的,你需要傳遞你想要搜索的字段,並且你需要在'searchable'區塊中將這些字段作爲'text'索引。你也可以顯示這些信息嗎? – mathieugagne