2012-02-26 4 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宝石を追加する前にレコードが保存されましたか?その場合は、クラスオブジェクト(または各インスタンス)のupdate_ngram_indexメソッドを呼び出して、それらをインデックスに追加する必要があります。

mongoid_fulltextの代わりにmongoid_searchの宝石をチェックアウトしましたか?

https://github.com/mauriciozaffari/mongoid_search

私は両方を試してみましたが、この1つは非常にクリーンな実装とインターフェースを持っていることがわかり見つけました。次に、私は全文検索を控えめに使用します。あなたは私以上のフルテキスト検索を使用しているかもしれませんが、その違いが機能的には分かりませんが、一見価値があります。

希望に役立ちます。

+0

はい私はこれを見逃していました.. update_ngram_index – user1232518