2012-02-26 78 views
1

我一直在使用noSql(Mongoid)製作的rails項目。每件事情都運行良好。問題是我想在這裏添加..全文搜索。我一直在使用這個寶石本...Mongoid和Full_text搜索問題

gem 'mongoid_fulltext' 

和我的模型文件看起來像這樣..

class Keyword 
    include Mongoid::Document 
    include Mongoid::FullTextSearch 
    field :name, type:String 
    #index :name, unique: true 
    embeds_many :posts 

    validates_presence_of :name 
    validates_uniqueness_of :name 

    fulltext_search_in :name, :index_name => 'name_index' 
end 

和控制器。

@keywords = Keyword.fulltext_search(params[:search], :index => 'name_index') 

然後@keywords總是總是返回一個空數組。

感謝 Awieet

回答

0

除了什麼我假設的格式錯誤,我能找到的唯一的錯誤是,你似乎可以手動命名指數。

也許在你的全文檢索電話你應該使用:index_name => 'name_index'而不是​​。

我建議只是不要搞亂索引的默認名稱,並從方法調用中完全刪除該參數。

此外,記錄是否在添加mongoid_fulltext寶石之前持續存在?如果是這樣,您需要調用Class對象(或每個實例)上的update_ngram_index方法將它們添加到索引。

除此之外,你檢查了mongoid_search寶石作爲mongoid_fulltext的替代?

https://github.com/mauriciozaffari/mongoid_search

我都試過,發現發現,這其中有一個更清潔的實現和接口。然後再次,我只使用全文搜索節省。您可能比我更多地使用全文搜索,但我不確定哪些差異是功能明智的,但值得一看。

希望有所幫助。

+0

是的我一直想念這個.. update_ngram_index – user1232518 2012-02-27 07:48:50