을 통해 내가 세 가지 모델 객체, Team
, Users
및 Member
와 응용 프로그램을 만들고 있어요으로 생각 - 스핑크스 검색, Member
는이 Team
및 Users
사이에 테이블을 조인. 따라서 각 Team
에는 많은 회원이있을 수 있으며 각 User
은 여러 팀의 회원이 될 수 있습니다.4.1 레일 - 대다 관계
의 관계는 다음과 같습니다 : 내가하고 싶은 것은 특정 팀에있는 회원을 검색하는 것입니다
# Team.rb
has_many :members
has_many :users, through: :members
# User.rb
has_many :members
has_many :teams, through: :members
. 현재 no
개의 결과가 표시됩니다.
내 인덱스는 다음과 같습니다
# user_index
ThinkingSphinx::Index.define :user, :with => :real_time do
indexes name
indexes email
indexes about
has team_id, type: :integer
has created_at, type: :timestamp
has updated_at, type: :timestamp
indexes members.team.name, :as => :teams
end
# team_index
ThinkingSphinx::Index.define :team, :with => :real_time do
indexes name
has created_at, type: :timestamp
has updated_at, type: :timestamp
indexes members.user.name, :as => :members
end
# member_index.rb
ThinkingSphinx::Index.define :member, :with => :real_time do
has user_id, type: :integer
has team_id, type: :integer
has created_at, type: :timestamp
has updated_at, type: :timestamp
end
(I 검색을 수행하는 곳) 내 members_controller
인덱스 작업이 - 다음과 같습니다 : 나는 팀이 실제로 사용자를 가지고 있음을 확인했다
def index
@team = Team.find_by_id(params[:team_id])
@users = @team.users.search(params[:search], :page => params[:page], :per_page => 10)
end
, @users는 항상 0을 반환합니다. 원하는대로 작동하도록 어떻게해야하는지에 대한 아이디어가 있습니까?
업데이트
나는 레일 사용 : 4.1.4 그리고 생각-sphink : 3.1.1
내 스핑크스 쿼리는 다음과 같습니다
Sphinx Query (0.7ms) SELECT * FROM `member_core` WHERE MATCH('Anders') AND `team_id` = 2 AND `sphinx_deleted` = 0 LIMIT 0, 10
스핑크스를 찾을 수 0 결과
약간 업데이트 된 컨트롤러 코드 사용 :
@members = @team.members.search(params[:search], :page => params[:page], :per_page => 10)
레일스 로그를보고 해당 SphinxQL 쿼리를 확인할 수 있습니까? – pat
또한 어떤 버전의 Rails와 Thinking Sphinx를 사용하고 있습니까? – pat
@pat 내 질문을 업데이트했으며 질문에 대한 답변을 얻었습니다. – Anders