2012-11-22 2 views
0

몇 가지 필드를 필터링 할 수있는 응용 프로그램 검색을하고 있습니다. 일부 색인은 모든 색인에 존재하지 않습니다.스핑크스 - 색인이 색인에없는 경우 클래스를 제외하십시오.

컨트롤러에서 검색 할 정확한 클래스를 정렬하면서, 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>] 

를 검색합니다.

답변

0

클래스를 전달하여 매개 변수를 검색 할 수 있습니다.

그러나 당신의 방법은 너무 생각합니다.

ThinkingSphinx.search(conditions: { type: "text" }) 

를 들어 그냥 오류

Sphinx Daemon returned warning: index bulletin_core,bulletin_delta,user_delta ...: query error: no field 'type' found in schema

를 기록하지만 충돌 나던. 그것은 또한 여기 https://groups.google.com/forum/?fromgroups=#!topic/thinking-sphinx/rrAPXtxUMjg를 작성하는 방법을 시도 할 수 있지만 조건뿐만 아니라 문자열 쿼리를 추가하면 나는 아직

+0

그것을 tryed하지 않은 필드를 type

를 색인 한 클래스의 인스턴스를 반환의 조건이 무시됩니다 - 내 업데이트를 참조하십시오. – Edward

+0

'''ThinkingSphinx.search ('Savanna', 조건 : {type : "텍스트"}, 클래스 : [사용자]) ''' 오류가 발생했습니다.'''Sphinx 데몬이 반환 한 오류 : index user_core, user_delta : query error : 'type'필드가 스키마에서 발견되었습니다. ''' – Pavel

+0

그래서 클래스를 매개 변수와 함께 전달하는 것이 좋습니다. 예를 들어, 숨겨진 필드 에서이 매개 변수 및 일부 자바 스크립트 이벤트에서 자바 스크립트를 통해 변경 – Pavel

관련 문제