スプリーコマースアプリケーションでsolrを処理するためにsunspotを使用しています。製品モデル用に定義しました:
Spree::Product.class_eval do
searchable :auto_index => true, :auto_remove => true do
...
end
end
インデックス時に、すべてが Solr に入り、正常に動作します。しかし、製品を編集しようとすると、変更が Solr に保存されません。たとえばtesttest
、製品のタイトルに「ような」という固有の単語を追加して、そのキーワードを検索しても何も返されません。データベース全体のインデックスを再作成すると、機能します。
内部ではオプションsunspot.yml
を使用していauto_commit_after_request: true
ます。
log/sunspot-solr-development.log
すべての検索が記録される場所を追跡しました。しかし、製品を編集しても Solr は呼び出されないようです。:auto_index => true
このオプションを使用すると、データベースへの保存がトリガーされると思いました (本番環境ではautoCommit
、Solr の機能を使用します)。
だから、私は少し立ち往生しています。太陽黒点がセーブ ブロックのどこに接続されているのか、それともバックグラウンドで RSolr なのかわかりません。誰かがこの問題を解決するのを手伝ってくれるかもしれません。
編集
Sunspot を使用すると、モデル クラスがindex
や などのメソッドを取得することがわかりましたindex!
。奇妙なことは、コンソール内でrails c
このメソッドが呼び出されたときにリストされることSpree::Product.first.methods
です。しかし、製品コントローラーから更新メソッドにフックすると、このメソッドはありません。そのため、黒点の初期化中に問題が発生する可能性があります。
参考までに: 上記のコード ( Spree::Product.class_eval do
) は、 の下のイニシャライザ内にありますconfig/initializers/sunspot/sunspot_product.rb
。