我到处寻找,但没有什么能帮助我。而且我不知道是什么问题。
我的模型
class Article
include Mongoid::Document
include Mongoid::Timestamps
include Tire::Model::Search
include Tire::Model::Callbacks
mapping do
indexes :_id, :index => :not_analyzed
indexes :title
indexes :body
end
def to_indexed_json
self.to_json
end
http://localhost:9200/articles/_mapping
{
"articles": {
"article": {
"properties": {
"$oid": {
"type": "string"
},
"body": {
"type": "string"
},
"title": {
"type": "string"
}
}
}
}
}
Article.search 'love'
没有结果,但有标题为“爱”的文章,我尝试建立很多请求,但没有任何效果。
总是相同的结果:
"hits"=>{"total"=>0, "max_score"=>nil, "hits"=>[]}}
但是如果我输入:Article.search "cbc267c955464f22d72a0100"
它会给我标题为“爱”的文章
所以在我看来,轮胎只在 ID 字段上创建索引,而不管模型上的映射索引。
当我重新创建索引时
Article.index_name
=> "articles"
Tire.index('articles').delete
=> true
Article.import
我的映射变为:
{
"articles": {
"article": {
"properties": {
"$oid": {
"type": "string"
}
}
}
}
}
更新
module BSON
class ObjectId
def as_json(*args)
to_s()
end
def to_json(*args)
MultiJson.encode(as_json())
end
end
end
实施此初始化后,一切似乎都正常