몇 가지 필드를 필터링 할 수있는 응용 프로그램 검색을하고 있습니다. 일부 색인은 모든 색인에 존재하지 않습니다.스핑크스 - 색인이 색인에없는 경우 클래스를 제외하십시오.
컨트롤러에서 검색 할 정확한 클래스를 정렬하면서, elsif elsif라는 복잡한 경우를 사용하십시오.
순간적으로 발생하는 것으로 보이는 조건을 무시하는 대신 조건 필드가 없으면 자동으로 모델을 검색하지 않도록 스핑크스를 생각하는 방법이 있습니까?
예
ThinkingSphinx.search(@query, :conditions => {:genres =>"classical-music"}, :match_mode => :extended, :classes => [Performer, Promoter, Tour, Venue, User], :order => :name_sort, :sort_mode => :asc)
사용자가 장르를 가지고 있지 않지만, 검색에 포함되어 갱신
내가 원하는만큼 그것은 확실히 작동하지 않습니다
발생합니다. 내 사용자 모델에는 색인에 장르 필드가 없으므로 장르를 검색 할 때 제외 시키길 바랍니다.
예는 사용자가 제외 된 경우가 정말 좋은 것
User.search("anne")
Sphinx Query (3.6ms) anne
Sphinx Found 1 result
User Load (0.4ms) SELECT `users`.* FROM `users` WHERE `users`.`id` IN (80)
=> [#<User id: 80, first_name: "Anne", last_name: "Bowers", bio: nil, email: "[email protected]", phone: nil, created_at: "2012-11-20 09:36:05", updated_at: "2012-11-20 09:36:05", role: nil, promoter_id: nil, performer_id: nil, job_title: nil>]
ThinkingSphinx.search("anne", :conditions => {:genres => "music"}, :match_mode => :extended, :classes => [User], :order => :name_sort, :sort_mode => :asc)
Sphinx Query (3.2ms) anne @genres music
Sphinx Found 1 result
User Load (0.4ms) SELECT `users`.* FROM `users` WHERE `users`.`id` IN (80)
=> [#<User id: 80, first_name: "Anne", last_name: "Bowers", bio: nil, email: "[email protected]", phone: nil, created_at: "2012-11-20 09:36:05", updated_at: "2012-11-20 09:36:05", role: nil, promoter_id: nil, performer_id: nil, job_title: nil>]
를 검색합니다.
그것을 tryed하지 않은 필드를
type
를 색인 한 클래스의 인스턴스를 반환의 조건이 무시됩니다 - 내 업데이트를 참조하십시오. – Edward
'''ThinkingSphinx.search ('Savanna', 조건 : {type : "텍스트"}, 클래스 : [사용자]) ''' 오류가 발생했습니다.'''Sphinx 데몬이 반환 한 오류 : index user_core, user_delta : query error : 'type'필드가 스키마에서 발견되었습니다. ''' – Pavel
그래서 클래스를 매개 변수와 함께 전달하는 것이 좋습니다. 예를 들어, 숨겨진 필드 에서이 매개 변수 및 일부 자바 스크립트 이벤트에서 자바 스크립트를 통해 변경 – Pavel