Okay in this plea for help I''m going to repeat some of what i posted
before but with a larger amount of background info in the hope that i
can get a decent grip on ferret before it wriggles away..
Firstly, what does installing the acts_as_ferret plugin actually do? I
install it and add it to my model and then the index is automatically
generated and a few methods are added to it and as far as i can see all
the index CRUD is being handled too. The Ferret gem is installed and
the index is generated and searchable so i assumed that i would be able
top use Ferret methods (other than the ones in acts as ferret)in my
application. when i try the code at the bottom of this post i get the
following errors (also in full at the bottom of post)
NameError: uninitialized constant BooleanQuery
So this means the rails/ruby/ is not seeing ferret right? so how do i
get rials to be able to see ferret? I have tried many variations on
include/require/ferret_config.rb but am obviously not getting it. Do i
need to do something extra if i want to simplicity of acts_as_ferret and
the power of Ferret?
If anyone out there knows what th eproblem is then please get in touch,
also does anyone use acts_as_ferret successfully in an application doing
more than just using find_by_contents? Thnaks in advance for any
replies/help
cheers
caspar
#####extract from model
require ''ferret''
class VoObject < ActiveRecord::Base
acts_as_ferret :fields=>
[''short_description'',''section'',''sale_category'',''sale_type'',''outcode'']
def VoObject.refine_search(search_input)
bq = BooleanQuery.new
bq.add_query(TermQuery.new(Term.new("section", search_input),
BooleanClause::Occur::Should))
filter = QueryFilter.new(bq)
@vobjects = Item.find_by_contents(search_text,:filter => filter,
:sort => ["section", "sale_category"])
redirect_to :results
end
############ I get this ##############
ruby script/console
Loading development environment.>> VoObject.refine_search(''housing'')
NameError: uninitialized constant BooleanQuery
from
/usr/lib/ruby/gems/1.8/gems/activesupport-1.3.1/lib/active_support/dependencies.rb:123:in
`const_missing''
from
/usr/lib/ruby/gems/1.8/gems/activesupport-1.3.1/lib/active_support/dependencies.rb:131:in
`const_missing''
from
/usr/lib/ruby/gems/1.8/gems/activesupport-1.3.1/lib/active_support/dependencies.rb:133:in
`const_missing''
from script/../config/../config/../app/models/vo_object.rb:22:in
`refine_search''
from (irb):1
--
Posted via http://www.ruby-forum.com/.
David Balmain
2006-Jul-09 16:10 UTC
[Ferret-talk] acts_as_ferret.. what does it actually do?
On 7/10/06, Caspar <waspfactory at gmail.com> wrote:> Okay in this plea for help I''m going to repeat some of what i posted > before but with a larger amount of background info in the hope that i > can get a decent grip on ferret before it wriggles away.. > > Firstly, what does installing the acts_as_ferret plugin actually do? I > install it and add it to my model and then the index is automatically > generated and a few methods are added to it and as far as i can see all > the index CRUD is being handled too. The Ferret gem is installed and > the index is generated and searchable so i assumed that i would be able > top use Ferret methods (other than the ones in acts as ferret)in my > application. when i try the code at the bottom of this post i get the > following errors (also in full at the bottom of post) > > NameError: uninitialized constant BooleanQueryBasically you just need to include the Search module in your code. ie. include Ferret::Search This could be dangerous so it is often better to include the full class path as I demonstrate bellow.> So this means the rails/ruby/ is not seeing ferret right? so how do i > get rials to be able to see ferret? I have tried many variations on > include/require/ferret_config.rb but am obviously not getting it. Do i > need to do something extra if i want to simplicity of acts_as_ferret and > the power of Ferret? > If anyone out there knows what th eproblem is then please get in touch, > also does anyone use acts_as_ferret successfully in an application doing > more than just using find_by_contents? Thnaks in advance for any > replies/help > cheers > caspar > > > #####extract from model > > require ''ferret'' > > class VoObject < ActiveRecord::Base > acts_as_ferret :fields=> > [''short_description'',''section'',''sale_category'',''sale_type'',''outcode''] > > def VoObject.refine_search(search_input) > bq = BooleanQuery.new > bq.add_query(TermQuery.new(Term.new("section", search_input), > BooleanClause::Occur::Should)) > filter = QueryFilter.new(bq) > @vobjects = Item.find_by_contents(search_text,:filter => filter, > :sort => ["section", "sale_category"]) > redirect_to :results > end >def VoObject.refine_search(search_input) bq = Ferret::Search::BooleanQuery.new bq.add_query(Ferret::Search::TermQuery.new(Ferret::Index::Term.new("section", search_input), Ferret::Search::BooleanClause::Occur::Should)) filter = Ferret::Search::QueryFilter.new(bq) @vobjects = Item.find_by_contents(search_text,:filter => filter, :sort => ["section", "sale_category"]) redirect_to :results end Please let me know if you are still having problems. Cheers, Dave
Hi okay thank you very much for replying, I''m very impressed with
ferret
and more impressed by you answering support questions, excellent work!
anyway update
wrong number of arguments (2 for 1)
RAILS_ROOT: script/../config/..
Application Trace | Framework Trace | Full Trace
#{RAILS_ROOT}/app/models/vo_object.rb:26:in `initialize''
#{RAILS_ROOT}/app/models/vo_object.rb:26:in `refine_search''
#{RAILS_ROOT}/app/controllers/search_controller.rb:34:in `refine''
line 26:
bq.add_query(Ferret::Search::TermQuery.new(Ferret::Index::Term.new("section",search_input),
Ferret::Search::BooleanClause::Occur::SHOULD))
sorry I''m just rushing off for the commute home and have only just
tried
this, have not had enough time to play around with it yet so if its a
stupid mistake by me i''m sorry for time wasting!
regards
caspar
David Balmain wrote:> On 7/10/06, Caspar <waspfactory at gmail.com> wrote:
>> application. when i try the code at the bottom of this post i get the
>> following errors (also in full at the bottom of post)
>>
>> NameError: uninitialized constant BooleanQuery
>
> Basically you just need to include the Search module in your code. ie.
>
> include Ferret::Search
>
> This could be dangerous so it is often better to include the full
> class path as I demonstrate bellow.
>
>> caspar
>> def VoObject.refine_search(search_input)
>> bq = BooleanQuery.new
>> bq.add_query(TermQuery.new(Term.new("section",
search_input),
>> BooleanClause::Occur::Should))
>> filter = QueryFilter.new(bq)
>> @vobjects = Item.find_by_contents(search_text,:filter => filter,
>> :sort => ["section", "sale_category"])
>> redirect_to :results
>> end
>>
>
> def VoObject.refine_search(search_input)
> bq = Ferret::Search::BooleanQuery.new
>
bq.add_query(Ferret::Search::TermQuery.new(Ferret::Index::Term.new("section",
> search_input),
> Ferret::Search::BooleanClause::Occur::Should))
> filter = Ferret::Search::QueryFilter.new(bq)
> @vobjects = Item.find_by_contents(search_text,:filter => filter,
> :sort => ["section", "sale_category"])
> redirect_to :results
> end
>
> Please let me know if you are still having problems.
>
> Cheers,
> Dave
--
Posted via http://www.ruby-forum.com/.
David Balmain
2006-Jul-09 17:06 UTC
[Ferret-talk] acts_as_ferret.. what does it actually do?
On 7/10/06, Caspar <waspfactory at gmail.com> wrote:> Hi okay thank you very much for replying, I''m very impressed with ferret > and more impressed by you answering support questions, excellent work! > > anyway update > > > > > wrong number of arguments (2 for 1) > > RAILS_ROOT: script/../config/.. > Application Trace | Framework Trace | Full Trace > #{RAILS_ROOT}/app/models/vo_object.rb:26:in `initialize'' > #{RAILS_ROOT}/app/models/vo_object.rb:26:in `refine_search'' > #{RAILS_ROOT}/app/controllers/search_controller.rb:34:in `refine'' > > > > line 26: > bq.add_query(Ferret::Search::TermQuery.new(Ferret::Index::Term.new("section",search_input), > Ferret::Search::BooleanClause::Occur::SHOULD))Looks like you''ve got the brackets in the wrong place. I have to take partial responsibility since didn''t pick it up the first time either. Try this; bq.add_query(Ferret::Search::TermQuery.new(Ferret::Index::Term.new("section",search_input)), Ferret::Search::BooleanClause::Occur::SHOULD)> sorry I''m just rushing off for the commute home and have only just tried > this, have not had enough time to play around with it yet so if its a > stupid mistake by me i''m sorry for time wasting!No worries. :D> regards > caspar > > > > David Balmain wrote: > > On 7/10/06, Caspar <waspfactory at gmail.com> wrote: > >> application. when i try the code at the bottom of this post i get the > >> following errors (also in full at the bottom of post) > >> > >> NameError: uninitialized constant BooleanQuery > > > > Basically you just need to include the Search module in your code. ie. > > > > include Ferret::Search > > > > This could be dangerous so it is often better to include the full > > class path as I demonstrate bellow. > > > >> caspar > >> def VoObject.refine_search(search_input) > >> bq = BooleanQuery.new > >> bq.add_query(TermQuery.new(Term.new("section", search_input), > >> BooleanClause::Occur::Should)) > >> filter = QueryFilter.new(bq) > >> @vobjects = Item.find_by_contents(search_text,:filter => filter, > >> :sort => ["section", "sale_category"]) > >> redirect_to :results > >> end > >> > > > > def VoObject.refine_search(search_input) > > bq = Ferret::Search::BooleanQuery.new > > bq.add_query(Ferret::Search::TermQuery.new(Ferret::Index::Term.new("section", > > search_input), > > Ferret::Search::BooleanClause::Occur::Should)) > > filter = Ferret::Search::QueryFilter.new(bq) > > @vobjects = Item.find_by_contents(search_text,:filter => filter, > > :sort => ["section", "sale_category"]) > > redirect_to :results > > end > > > > Please let me know if you are still having problems. > > > > Cheers, > > Dave > > > -- > Posted via http://www.ruby-forum.com/. > _______________________________________________ > Ferret-talk mailing list > Ferret-talk at rubyforge.org > http://rubyforge.org/mailman/listinfo/ferret-talk >