私は、理解しているものがRails 3と互換性があるThinking Sphinx 2.0.10を実装しようとしています。私はRuby on Railsを使ってプログラミングするのがとても新しいです。私はStackOverflowに関するかなりの記事を読んだが、私の問題の解決策を見つけることができなかった。Railsで思考するスフィンクスを使用する際の問題3.2.1
gemfileにrequireパラメータを使用せずにgemをインストールしました。
私は、検索を追加したいリストを表示する実用的なRailsアプリケーションを持っています。
私のモデルファイル内のインデックスを定義するためのコードです。
define_index do
indexes :email, :sortable => true
indexes :name, :sortable => true
indexes microposts.content, :as => :micropost_content
end
ここに私のコントローラファイルのRailsコードがあります。コメントアウトされた行は、動作している元のコードです。私はwill_paginateのデフォルトを持っていますが、私はアプリケーションコントローラで1ページあたり15個のレコードがあると思います。
ここでは、インデックスページに追加した検索ボックスを示します。
<p>
<%= text_field_tag :search, params[:search] %>
<%= submit_tag "Search", :name => nil %>
</p>
ここに私のrSpecコードです。これはThinking Sphinxを実装しようとする前に私が使っていたオリジナルのコードです。私はRSpecのテストを実行すると
describe "index" do
let(:user) { FactoryGirl.create(:user) }
before(:each) do
sign_in user
visit users_path
end
it { should have_selector('title', text: 'All users') }
describe "pagination" do
before(:all) { 15.times { FactoryGirl.create(:user) } }
after(:all) { User.delete_all }
let(:first_page) { User.paginate(page: 1) }
let(:second_page) { User.paginate(page: 2) }
it { should have_link('Next') }
it { should have_link('2') }
it { should_not have_link('delete') }
it "should list each user" do
User.all[0..2].each do |user|
page.should have_selector('li', text: user.name)
end
end
it "should list the first page of users" do
first_page.each do |user|
page.should have_selector('li', text: user.name)
end
end
it "should not list the second page of users" do
second_page.each do |user|
page.should_not have_selector('li', text: user.name)
end
end
describe "as an admin user" do
let(:admin) { FactoryGirl.create(:admin) }
before do
sign_in admin
visit users_path
end
it { should have_link('delete', href: user_path(User.first)) }
it "should be able to delete another user" do
expect { click_link('delete') }.to change(User, :count).by(-1)
end
it { should_not have_link('delete', href: user_path(admin)) }
end
end
end
私は次のエラーを取得する:
Failure/Error: visit users_path
ActionView::Template::Error:
getaddrinfo: nodename nor servname provided, or not known
ページがうまく表示されます。検索ボックスにテキストを入力してボタンをクリックすると、何も起こりません。それは私には驚きではありません。
端末でSphinxを実行できます。検索は正常に動作します。 Thinking Sphinxでこの問題をデバッグするだけでは不十分です。私はこのウェブサイトや他の多くのページで過去数日間多くのページを検索しましたが、誰もこの問題に対処していません。どんな助けもありがとう。
マクシムス、私はちょうどあなたが示唆したものをやった:)ので、人生のこの上で作業を終了しました。 Sphinxがレコードをうまく見つけることを考えている。私はビュー/コントローラを更新する方法を理解する必要があります。助けてくれてありがとう。 –
私はRailsアプリケーション用にPostgreSQLを使用していますので、テキスト検索のためにpg_search gemをインストールすることにしました。すべてがボンネットの下にあります。テキスト検索ではうまく機能します。 –