3

テーブルにデルタ列を追加しました。

class AddDeltaIndexToCimgs < ActiveRecord::Migration
  def change
    add_column :cimgs, :delta, :boolean, default: true, null: false
  end
end

移行しました

また、define_indexを追加しました。

define_index do
  indexes search_cache
  has :approved
  set_property delta: true
end

そして、私はレーキタスクを実行しました

rake ts:stop
rake ts:index
rake ts:start

またはrake ts:rebuild

次に、テーブルに新しいレコードを追加し、それを検索します...そして何もしません。コアインデックス付きのレコードは完全に見つかりますが、デルタはまったく機能していません。

それらを検索するには、次を使用します。

Cimg.search query, with: {approved: true}

そして、はい、すべてのCimgが承認され、search_cacheにたくさんのものがあり、新しいものはデータベースでdelta=1でマークされています。私は再確認しました。

db / sphinxフォルダーを確認すると、その名前のファイルがたくさんcimg_delta作成されています。

生成された構成ファイルは次のとおりです:http://pastebin.com/z0fHr43k

Sphinx version: 2.0.7
Thinking Sphinx gem version: 2.0.5
Rails version: 3.1.0.rc8
Ruby version: 1.9.2p290 

なぜこれが起こっているのかについて何か考えはありますか?

4

1 に答える 1

0

健全性チェックだけですが、 config/sphinx.yml ファイルで行っていますか

    development:      
      min_prefix_len: 2  

      indexed_models:
        - Article
        - Match
        - Player
        - Team
        - Group
        - Tournament
        - Ground
        - User

新しいインデックス付きモデルを追加したことを確認してください。そうしないと、Sphinx は各環境で指定されたモデルのみをインデックス化すると考えられます。ユーザー モデルに define_index を追加したところ、実行時にインデックスが作成されなかった理由がわかりませんでしたrake ts:rebuild。 indexed_models: user を shinx.yml に追加するのを忘れていました。

これが役に立てば幸いです、ありがとうデイブ

于 2012-07-05T00:15:09.630 に答える