2

ドキュメントを使用して、 ThinkingSphinxをプロジェクトに統合しようとしています。属性を持つモデルの場合、次のようにインデックスを作成しました。User first_namelast_name

User.rb

define_index do
  indexes :first_name
  indexes :last_name
end

次に、コマンドを実行します。

rake ts:index
rake ts:start

これで検索が始まります。次のコマンドを使用して検索すると、結果が得られます。

User.search('swati')

しかし、私が走るとき

User.search :with => {:first_name => "swati"}

それは私にエラーを与えます:

Sphinx  Sphinx Daemon returned error: index user_core: no such filter attribute 'first_name'
Sphinx  Caught Sphinx exception: index user_core: no such filter attribute 'first_name' (0 tries left)
ThinkingSphinx::SphinxError: index user_core: no such filter attribute 'first_name'
from /home/swati/.rvm/gems/ruby-1.9.3-p286/gems/thinking-sphinx-2.0.13/lib/thinking_sphinx/search.rb:438:in `block in populate'
from /home/swati/.rvm/gems/ruby-1.9.3-p286/gems/thinking-sphinx-2.0.13/lib/thinking_sphinx/search.rb:606:in `call'
from /home/swati/.rvm/gems/ruby-1.9.3-p286/gems/thinking-sphinx-2.0.13/lib/thinking_sphinx/search.rb:606:in `retry_on_stale_index'
from /home/swati/.rvm/gems/ruby-1.9.3-p286/gems/thinking-sphinx-2.0.13/lib/thinking_sphinx/search.rb:426:in `populate'
from /home/swati/.rvm/gems/ruby-1.9.3-p286/gems/thinking-sphinx-2.0.13/lib/thinking_sphinx/search.rb:187:in `method_missing'
from /home/swati/.rvm/gems/ruby-1.9.3-p286/gems/railties-3.2.8/lib/rails/commands/console.rb:47:in `start'
from /home/swati/.rvm/gems/ruby-1.9.3-p286/gems/railties-3.2.8/lib/rails/commands/console.rb:8:in `start'
from /home/swati/.rvm/gems/ruby-1.9.3-p286/gems/railties-3.2.8/lib/rails/commands.rb:41:in `<top (required)>'
from script/rails:6:in `require'
from script/rails:6:in `<main>'

私はstackoverflowで可能な解決策を探しました、そしてそれはコマンドrake ts:indexとを実行するように頼まれましたrake ts:rebuild。私はこのコマンドを実行しましたが、役に立ちませんでした。

これに対する解決策を見つけるのを手伝ってください。

どうもありがとう。

4

2 に答える 2

6

インデックスにhasを含む属性を作成し、 rebuildを使用してから使用する必要があります

has :first_name

hasは属性を作成し、withはフィルターとして使用されます (属性用) http://pat.github.com/ts/en/searching.html#filters

フィルターについては、 http://pat.github.com/ts/en/indexing.html#attributesも確認してください。

于 2012-11-23T16:14:29.867 に答える