2009-12-21 2 views
1

나는 나의 레일 어플리케이션에서 acts_as_ferret을 작동 시키려고 노력 중이다. ferret 보석을 설치했습니다. acts_as_ferret 플러그인을 설치했습니다.acts_as_ferret 전혀 검색하지 않음

이것은 내 모델이 지금처럼 보입니다.

class User < ActiveRecord::Base 
    acts_as_ferret :fields => { 
    :first_name => {}, 
    :last_name => {} 
    } 

이 난

class User < ActiveRecord::Base 
    acts_as_ferret :fields => [:first_name, :last_name] 

지금 내가 여기

script/console는 인덱스를 다시 작성 나는 시도조차 내가 쓴 코드와 내가

User.first 
# => <Jobseeker id: 1, first_name: "Chirantan", last_name: "Rajhans"\> 
User.find(:first, :conditions => ["first_name like ?", '%chi%']) 
# => <Jobseeker id: 1, first_name: "Chirantan", last_name: "Rajhans"\> 
User.find_with_ferret 'chi' 
# => [] 
User.find_with_ferret '%chi%' 
# => [] 
User.find_with_ferret 'Chirantan' 
# => [] 

을 가지고 응답입니다 열 시도 . 작동하지 않았다. 흰 족제비는 모든 것이 잘되고 있음을 보여줍니다.

다음은 로그의 스냅 샷입니다.

[user] rebuild index with models: [User(id: integer, login: string, email: string, crypted_password: string, salt: string, created_at: datetime, updated_at: datetime, remember_token: string, remember_token_expires_at: datetime, first_name: string, middle_name: string, last_name: string, url_id: string, active: boolean, feature_profile: boolean, type: string, company_id: string)] 
    [user] reindexing model User 
    [user] reindex model User : 100.00% complete : 0.01 secs to finish 
    [user] reopening index at /home/chirantan/workspace/parnunu/index/development/user 

    index_for [User(id: integer, login: string, email: string, crypted_password: string, salt: string, created_at: datetime, updated_at: datetime, remember_token: string, remember_token_expires_at: datetime, first_name: string, middle_name: string, last_name: string, url_id: string, active: boolean, feature_profile: boolean, type: string, company_id: string)] 
    options: {:limit=>nil, :offset=>nil} 
    ar_options: {} 
    [user] stored_fields: nil 
    [user] query: chi 
    -->+(last_name:chi first_name:chi) +(class_name:User) 
    [user] now retrieving records from AR with options: {} 
    [user] 0 results from AR: [] 
    Query: chi 
    total hits: 0, results delivered: 0 

    index_for [User(id: integer, login: string, email: string, crypted_password: string, salt: string, created_at: datetime, updated_at: datetime, remember_token: string, remember_token_expires_at: datetime, first_name: string, middle_name: string, last_name: string, url_id: string, active: boolean, feature_profile: boolean, type: string, company_id: string)] 
    options: {:limit=>nil, :offset=>nil} 
    ar_options: {} 
    [user] stored_fields: nil 
    [user] query: %chi% 
    -->+(last_name:chi first_name:chi) +(class_name:User) 
    [user] now retrieving records from AR with options: {} 
    [user] 0 results from AR: [] 
    Query: %chi% 
    total hits: 0, results delivered: 0 

    index_for [User(id: integer, login: string, email: string, crypted_password: string, salt: string, created_at: datetime, updated_at: datetime, remember_token: string, remember_token_expires_at: datetime, first_name: string, middle_name: string, last_name: string, url_id: string, active: boolean, feature_profile: boolean, type: string, company_id: string)] 
    options: {:limit=>nil, :offset=>nil} 
    ar_options: {} 
    [user] stored_fields: nil 
    [user] query: Chirantan 
    -->+(last_name:chirantan first_name:chirantan) +(class_name:User) 
    [user] now retrieving records from AR with options: {} 
    [user] 0 results from AR: [] 
    Query: Chirantan 
    total hits: 0, results delivered: 0 

콘솔의 개발 모드에서 테스트 중이었습니다. 놓친 단계가 있습니까? 아니면 (ThinkingSphinx 에서처럼) 인덱싱 프로세스가 필요합니까? 내가 도대체 ​​뭘 잘못하고있는 겁니까?

답변

0

는 모든 필드를 검색하지 않는 것처럼 소리

User.find_with_ferret 'first_name:Chirantan' 

의 쿼리를보십시오. 필드를 지정하려면 default_field 옵션을 사용해야합니다.

+0

감사합니다. 그러나 몇 시간 동안 응답을 얻지 못했기 때문에 스핑크스로 전환했고 매우 잘 작동했습니다. 나는 당신의 제안을 시도 할 것입니다. – Chirantan