1

スプリーコマースアプリケーションで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

4

2 に答える 2

0

solr_index と solr_index を使用する必要があります。コントローラーからのメソッド。

solr_index API ドキュメント

于 2013-11-29T09:47:49.547 に答える