検索フィールドのレコードを thinking_sphinx gem で更新し、構成しました。正常に動作していますが、問題は、デフォルトである 20 レコードしか表示されないことです。それらを変更して、より多くのレコードをビューに表示する方法..
4 に答える
ニュートリノはほぼ正しいです...
まず、Sphinx(およびThinking Sphinx)は常にリクエストをページ分割し、デフォルトのページサイズは20であることに注意してください。これを変更する場合は、パス:per_page => 30
または同様のものを使用して、ページあたりのレコード数を取得できます。あなたが欲しいです。
Model.search 'foo', :per_page => 42
次に、Sphinx(デフォルト)では、使用可能な検索結果の総数がデフォルトで1000に制限されています。これがNeutrinoが指摘していたことです。max_matchesを設定すると、その値を増やすことができます。ただし、検索呼び出しでも値を指定する必要があります。:max_matches
Model.search 'foo', :max_matches => 10_000
ファイルの値を変更するときは、停止/再インデックス/再起動する必要があります。config/sphinx.yml
これを行う単一のrakeタスクがあります。
rake ts:rebuild
これにより、生成された構成ファイルが最新であり、Sphinxデーモンが変更を認識していることが保証されます。
コントローラ内
@sphinx = Ad.search(params[:search], :per_page => 1000)
それは私のために働いた。
20以上の結果を取得するためにすべてを試しました。
設定ファイルでmax_matchesを1000に設定しました。
それからまたそれは私にたった20の結果を与えていました。
次に、:per_page => 200を試してみたところ、より多くの結果が得られました。
手伝ってくれてありがとう。
あなたのconfig/sphinx.yml
(まだ持っていない場合は作成してください)に、次を追加します。
development:
max_matches: 10000
# ... repeat for other environments
詳細については、ドキュメントを参照してください。