2012-02-22 6 views
0

私は、理解しているものが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でこの問題をデバッグするだけでは不十分です。私はこのウェブサイトや他の多くのページで過去数日間多くのページを検索しましたが、誰もこの問題に対処していません。どんな助けもありがとう。

答えて

0

スフィンクスデータベースを初期化しましたか?

通常あなただけのような何かをする必要があります。

rake ts:rebuild 

これは自動的にrake ts:confを実行し、インデックスを再構築する必要があります。

rake ts:inを使用してインデックスを更新することもできます。

これが動作しているかどうかをテストする簡単な方法は、レールコンソール(rails c)を実行して、ユーザーを手動で検索することです(User.search)。

あなたがどんな結果を取得する場合、インデックスが利用可能であり、あなたは次のご意見/コントローラのトラブルシューティングを行うことができます;)

+0

マクシムス、私はちょうどあなたが示唆したものをやった:)ので、人生のこの上で作業を終了しました。 Sphinxがレコードをうまく見つけることを考えている。私はビュー/コントローラを更新する方法を理解する必要があります。助けてくれてありがとう。 –

+0

私はRailsアプリケーション用にPostgreSQLを使用していますので、テキスト検索のためにpg_search gemをインストールすることにしました。すべてがボンネットの下にあります。テキスト検索ではうまく機能します。 –

関連する問題