Swati Aggarwal
Swati Aggarwal

Reputation: 1275

ThinkingSphinx Error: such filter attribute

I am trying to integrate ThinkingSphinx into my project using the doc. For a User model with attributes first_name and last_name I have created the indexes as:

User.rb

define_index do
  indexes :first_name
  indexes :last_name
end

Then I run the commands:

rake ts:index
rake ts:start

This starts my search. I get the results when I use the following command to search:

User.search('swati')

But When I run

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

It gives me the error:

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>'

I searched for a possible solution on stackoverflow and it has been asked to run the commands rake ts:index and rake ts:rebuild. I have run this commands but it didn't help me.

Please help me figure out a solution for this.

Many thanks.

Upvotes: 2

Views: 2894

Answers (2)

Benjamin Crouzier
Benjamin Crouzier

Reputation: 41855

Be carefull, rake ts:reindex and rake ts:rebuild are different.

If you add a new index, you need to rebuild.

If you are paranoiac like me, try everything:

rake ts:rebuild
rake ts:reindex
rake ts:restart

If it still doesn't work, make sure your index is defined properly.

Upvotes: 4

pablomarti
pablomarti

Reputation: 2107

You should create an attribute with has in the index, rebuild, and then use with

has :first_name

Has creates an attribute, and with is used as a filter (for attributes) http://pat.github.com/ts/en/searching.html#filters

Also check http://pat.github.com/ts/en/indexing.html#attributes for filters.

Upvotes: 6

Related Questions