我正在尝试让acts_as_ferret在我的rails应用程序中工作。我已经安装了ferret
gem。安装了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 :(得分:0)
尝试查询
User.find_with_ferret 'first_name:Chirantan'
听起来你并没有搜索所有领域。如果要指定字段,则需要使用default_field选项。