필자는 이해력이 Rails 3과 호환되는 Thinking Sphinx 2.0.10을 구현하려고 시도하고 있습니다. Ruby on Rails를 사용하여 프로그래밍 할 때 매우 익숙합니다. StackOverflow에 대한 기사를 많이 읽었지만 내 문제에 대한 해결책을 찾지 못했습니다.Rails를 사용하여 스핑크스를 생각할 때의 문제점 3.2.1
내 Gemfile에 require 매개 변수를 사용하지 않고 gem을 설치했습니다.
gem 'thinking-sphinx', '2.0.10'
나는 내가 검색을 추가 할 목록을 표시하는 작업 레일 응용 프로그램이 있습니다.
내 모델 파일에서 색인을 정의하는 코드입니다.
define_index do
indexes :email, :sortable => true
indexes :name, :sortable => true
indexes microposts.content, :as => :micropost_content
end
다음은 컨트롤러 파일에있는 레일스 코드입니다. 주석 처리 된 행은 작동중인 원래 코드입니다. 나는 페이지 당 15 레코드에 대한 응용 프로그램 컨트롤러에서 생각하는 will_paginate에 대한 기본값이 있습니다.
def index
@users = User.search params[:search], :per_page => 15
# @users = User.paginate(page: params[:page])
end
다음은 색인 페이지에 추가 한 검색 창입니다.
<p>
<%= text_field_tag :search, params[:search] %>
<%= submit_tag "Search", :name => nil %>
</p>
여기 내 rSpec 코드입니다. 이것은 Thinking Sphinx를 구현하기 전에 사용했던 원래 코드입니다.
Failure/Error: visit users_path
ActionView::Template::Error:
getaddrinfo: nodename nor servname provided, or not known
페이지가 표시 잘 : 내 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
나는 다음과 같은 오류가 발생합니다. 검색 창에 텍스트를 입력하고 버튼을 클릭해도 아무런 변화가 없습니다. 이는 나에게 놀랄 일이 아닙니다.
터미널에서 스핑크스를 실행할 수 있습니다. 검색은 정상적으로 작동합니다. Thinking Sphinx에서이 문제를 디버깅하기에 충분하지 않습니다. 지난 며칠 동안이 웹 사이트 및 많은 다른 페이지에서 많은 페이지를 검색했지만 그 중 누구도이 문제를 다루지 않았습니다. 어떤 도움을 주시면 감사하겠습니다.
막시무스,이 때문에 삶의 작업을 종료했다 :) 난 그냥 당신이 무엇을 제안했다. 사고 스핑크스는 기록을 잘 찾는다. 뷰/컨트롤러를 업데이트하는 방법을 알아야합니다. 도와 주셔서 감사합니다. –
필자는 필자의 레일즈 애플리케이션에 PostgreSQL을 사용하고 있기 때문에 텍스트 검색을 위해 pg_search gem을 설치하기로 결정했습니다. 모든 것이 두건 아래에있다. 그것은 텍스트 검색을 위해 정말 잘 작동합니다. –