Ultrasphinx - field is invalid - can't get :filters to work

I am having trouble getting the Ultrasphinx plug-in to filter search
results using the :filters parameter; searches that use the :query
parameter, however, work just fine. Every time I run a search using the
:filters parameter I receive the following error:

Ultrasphinx::UsageError:field “xxx” is invalid

Here is how my model is configured:

class Product
is_indexed :fields => [ “code” ]
end

And here is an example search that fails with the above exception:

search = Ultrasphinx::Search.new(:filters => {:code => “test”})
search.run

And an example of a search that works just fine:

search = Ultrasphinx::Search.new(:query => “code:test”)
search.run

I must be missing something simple. Any help would be greatly
appreciated. Thanks in advance.

Regards,
Jason

It’s been a while, but, I believe I discovered that :filters are only
applicable to association FK columns.

I have exactly the same problem. Does anyone knows for a solution?

I can not make it work in any way. I’m dealing with this a whole workday
today.

So, I have tried all of these setups:

class Video < ActiveRecord::Base

belongs_to :topic

is_indexed :fields => [‘title’,‘description’,‘created_at’],
:include => [
{:association_name => ‘topic’, :field => ‘id’, :as =>
‘topic_id’}
],
:delta => {:field => ‘created_at’}

end

@sphinx = Ultrasphinx::Search.new(:query => “london”, :class_names =>
“Video”, :filters => {:topic_id => 17} ).run.total_entries

Ultrasphinx::UsageError: field “topic_id” is invalid


is_indexed :fields => [‘title’,‘description’,‘created_at’,‘topic_id’],

@sphinx = Ultrasphinx::Search.new(:query => “london”, :class_names =>
“Video”, :filters => {:topic_id => 17} ).run.total_entries

Ultrasphinx::UsageError: field “topic_id” is invalid


is_indexed :fields => [‘title’,‘description’,‘created_at’],
:include => [
{:association_name => ‘topic’, :field => ‘id’, :as =>
‘topic_id2’}

@sphinx = Ultrasphinx::Search.new(:query => “london”, :class_names =>
“Video”, :filters => {:topic_id2 => 17} ).run.total_entries

Ultrasphinx::UsageError: field “topic_id2” is invalid


After each change of configuration I run
rake ultrasphinx:configure
rake ultrasphinx:index

No real results. I just can’t make it work with :filters . I’m using
ultrasphinx 1.11 .

Every idea and help is highly appreciated.

10x in advance.

I had an advice from the Ultrasphinx official forum to try with aliasing
the topic_id as an unique id name. So I tried this configuration:

is_indexed :fields => [‘title’,‘description’,‘created_at’,
{:field => ‘topic_id’, :as => ‘video_topic_id’}],
:delta => {:field => ‘created_at’}

(topic_id is an integer column that is part of Video model)

After that running: rake ulrasphinx:configure; rake ultrasphinx:index;

However the same error occurs:

Ultrasphinx::Search.new(:query => “london”, :class_names => “Video” ).run.total_entries
=> 1

Ultrasphinx::Search.new(:query => “london”, :class_names => “Video”, :filters => {:video_topic_id => 17} ).run.total_entries
Ultrasphinx::UsageError: field “video_topic_id” is invalid


In case that there’s someone who has successfully run a similar task,
share your configurations, please.

Stanislav B. wrote:

I can not make it work in any way. I’m dealing with this a whole workday
today.

So, I have tried all of these setups:

class Video < ActiveRecord::Base

belongs_to :topic

is_indexed :fields => [‘title’,‘description’,‘created_at’],
:include => [
{:association_name => ‘topic’, :field => ‘id’, :as =>
‘topic_id’}
],
:delta => {:field => ‘created_at’}

end

@sphinx = Ultrasphinx::Search.new(:query => “london”, :class_names =>
“Video”, :filters => {:topic_id => 17} ).run.total_entries

Ultrasphinx::UsageError: field “topic_id” is invalid


is_indexed :fields => [‘title’,‘description’,‘created_at’,‘topic_id’],

@sphinx = Ultrasphinx::Search.new(:query => “london”, :class_names =>
“Video”, :filters => {:topic_id => 17} ).run.total_entries

Ultrasphinx::UsageError: field “topic_id” is invalid


is_indexed :fields => [‘title’,‘description’,‘created_at’],
:include => [
{:association_name => ‘topic’, :field => ‘id’, :as =>
‘topic_id2’}

@sphinx = Ultrasphinx::Search.new(:query => “london”, :class_names =>
“Video”, :filters => {:topic_id2 => 17} ).run.total_entries

Ultrasphinx::UsageError: field “topic_id2” is invalid


After each change of configuration I run
rake ultrasphinx:configure
rake ultrasphinx:index

No real results. I just can’t make it work with :filters . I’m using
ultrasphinx 1.11 .

Every idea and help is highly appreciated.

10x in advance.

Thank you. I’ll test your suggestion as soon as possible.

I was able to get a ‘filter’ to work…

basically I used the :concatenate option

is_indexed :fields => [‘title’,‘description’,‘created_at’],
:concatenate => [ {:fields => [‘topic_id’], :as
=> ‘video_topic_id’} ],
:delta => {:field => ‘created_at’}

Then I was able to run this.

Ultrasphinx::Search.new(:query => “london video_topic_id:
17”, :class_names => “Video”)

This is in no way ideal…
But I did manage to return the result set I wanted.

On Jan 22, 3:51 am, Stanislav B. <rails-mailing-l…@andreas-