i''m using Ferret 0.9.0 with acts_as_ferret (the one from svn.jkraemer.net), and i''m getting duplicate results, as described in this thread: http://rubyforge.org/pipermail/ferret-talk/2005-December/000048.html is there a way to configure the indexes created by acts_as_ferret to use :key => :id, as described in that thread? i''ve poked around in the code, and had trouble even finding where the index was being created. or could something else be causing this? every time i re-save (or update) a model, a new document is being created in the index. ferret is rad, many thanks for all the work on it. best, john _____________________ John McGrath http://fryolator.com ---------------------------------------------------------------- This message was sent using IMP, the Internet Messaging Program.
Hi John, On Wed, Apr 05, 2006 at 12:09:37AM -0400, John McGrath wrote:> i''m using Ferret 0.9.0 with acts_as_ferret (the one from svn.jkraemer.net), and > i''m getting duplicate results, as described in this thread: > http://rubyforge.org/pipermail/ferret-talk/2005-December/000048.html > > is there a way to configure the indexes created by acts_as_ferret to use :key => > :id, as described in that thread? i''ve poked around in the code, and had trouble > even finding where the index was being created.acts_as_ferret uses the id as a key by default. Could you please check if this problem still occurs with the current trunk (located at svn://projects.jkraemer.net/acts_as_ferret/trunk/plugin/acts_as_ferret ) Cheers, Jens -- webit! Gesellschaft f?r neue Medien mbH www.webit.de Dipl.-Wirtschaftsingenieur Jens Kr?mer kraemer at webit.de Schnorrstra?e 76 Tel +49 351 46766 0 D-01069 Dresden Fax +49 351 46766 66
hi jens, updated to trunk, but still having the same issue in my Book.rb model i have the acts_as_ferret line with no attributes: acts_as_ferret. to keep things simple it''s the only model using acts_as_ferret right now. my controller code is based on the example in the comments above find_id_by_contents: @res << Book.find_id_by_contents(params[:search][:search_term]) if i zero both the index and the db, then add a single book, one (and only one) book appears in the ''books'' table, but the line above from the controller returns 3 results from the newly-created index at index/development/Book. it''s coming from somewhere in the plugin, i think, because when i add this line to find_id_by_contents, right after the call to ferret_index.search(q, option): logger.debug("hits is: #{hits.size}") this shows up in the log: hits is: 3 best, john Quoting Jens Kraemer <kraemer at webit.de>:> Hi John, > > On Wed, Apr 05, 2006 at 12:09:37AM -0400, John McGrath wrote: > > i''m using Ferret 0.9.0 with acts_as_ferret (the one from svn.jkraemer.net), > and > > i''m getting duplicate results, as described in this thread: > > http://rubyforge.org/pipermail/ferret-talk/2005-December/000048.html > > > > is there a way to configure the indexes created by acts_as_ferret to use > :key => > > :id, as described in that thread? i''ve poked around in the code, and had > trouble > > even finding where the index was being created. > > acts_as_ferret uses the id as a key by default. Could you please check > if this problem still occurs with the current trunk (located at > svn://projects.jkraemer.net/acts_as_ferret/trunk/plugin/acts_as_ferret ) > > > Cheers, > Jens > > > -- > webit! Gesellschaft f?r neue Medien mbH www.webit.de > Dipl.-Wirtschaftsingenieur Jens Kr?mer kraemer at webit.de > Schnorrstra?e 76 Tel +49 351 46766 0 > D-01069 Dresden Fax +49 351 46766 66 > _______________________________________________ > Ferret-talk mailing list > Ferret-talk at rubyforge.org > http://rubyforge.org/mailman/listinfo/ferret-talk > >---------------------------------------------------------------- This message was sent using IMP, the Internet Messaging Program.
still banging my head against this. at a suggestion from jens i checked the index size with irb, and it is indeed larger than it should be -- extra entries are being put in. i also got the demo from svn and ran the unit tests, some of which failed. the failing tests look like they''re related to multiple id issues, too -- i''ll paste them in below. i''m slowly working my way through the code, but ferret is new to me (ruby too, really), so it might take a while. if anyone has any pointers in the meanwhile, i''d really appreciate it. since my problems have been so consistent, and since i get similar issues with the demo, i''m guessing it might have something to do with changes to ActiveRecord in Rails 1.1. fwiw, my env details again: mac os 10.4.6, mysql 5.0.18, ruby 1.8.4, rails 1.1, ferret 0.9, acts_as_ferret from trunk. i removed all other plugins from my app in case they were conflicting, and still had the same problems. here''s the rake output from the unit tests: dewey:~/user/squirl/aaf_demo/aaf_demo john$ rake (in /Users/john/user/squirl/aaf_demo/aaf_demo) /opt/local/bin/ruby -Ilib:test "/opt/local/lib/ruby/gems/1.8/gems/rake-0.7.0/lib/rake/rake_test_loader.rb" "test/unit/comment_test.rb" "test/unit/content_test.rb" Loaded suite /opt/local/lib/ruby/gems/1.8/gems/rake-0.7.0/lib/rake/rake_test_loader Started ........FFF.F. Finished in 22.529063 seconds. 1) Failure: test_id_multi_search(ContentTest) [./test/unit/content_test.rb:96]: <5> expected but was <6>. 2) Failure: test_indexed_method(ContentTest) [./test/unit/content_test.rb:43]: <1> expected but was <0>. 3) Failure: test_multi_index(ContentTest) [./test/unit/content_test.rb:67]: <5> expected but was <6>. 4) Failure: test_multi_search(ContentTest) [./test/unit/content_test.rb:85]: <5> expected but was <6>. 14 tests, 70 assertions, 4 failures, 0 errors /opt/local/bin/ruby -Ilib:test "/opt/local/lib/ruby/gems/1.8/gems/rake-0.7.0/lib/rake/rake_test_loader.rb" "test/functional/content_controller_test.rb" Loaded suite /opt/local/lib/ruby/gems/1.8/gems/rake-0.7.0/lib/rake/rake_test_loader Started ......... Finished in 3.15368 seconds. 9 tests, 36 assertions, 0 failures, 0 errors rake aborted! Test failures Quoting John McGrath <jmcgrath at fryolator.com>:> hi jens, updated to trunk, but still having the same issue > > in my Book.rb model i have the acts_as_ferret line with no attributes: > acts_as_ferret. to keep things simple it''s the only model using > acts_as_ferret > right now. > > my controller code is based on the example in the comments above > find_id_by_contents: > > @res << Book.find_id_by_contents(params[:search][:search_term]) > > if i zero both the index and the db, then add a single book, one (and only > one) > book appears in the ''books'' table, but the line above from the controller > returns 3 results from the newly-created index at index/development/Book. > > it''s coming from somewhere in the plugin, i think, because when i add this > line > to find_id_by_contents, right after the call to ferret_index.search(q, > option): > logger.debug("hits is: #{hits.size}") > > this shows up in the log: > hits is: 3 > > best, > john > > > Quoting Jens Kraemer <kraemer at webit.de>: > > > Hi John, > > > > On Wed, Apr 05, 2006 at 12:09:37AM -0400, John McGrath wrote: > > > i''m using Ferret 0.9.0 with acts_as_ferret (the one from > svn.jkraemer.net), > > and > > > i''m getting duplicate results, as described in this thread: > > > http://rubyforge.org/pipermail/ferret-talk/2005-December/000048.html > > > > > > is there a way to configure the indexes created by acts_as_ferret to use > > :key => > > > :id, as described in that thread? i''ve poked around in the code, and had > > trouble > > > even finding where the index was being created. > > > > acts_as_ferret uses the id as a key by default. Could you please check > > if this problem still occurs with the current trunk (located at > > svn://projects.jkraemer.net/acts_as_ferret/trunk/plugin/acts_as_ferret ) > > > > > > Cheers, > > Jens > > > > > > -- > > webit! Gesellschaft f?r neue Medien mbH www.webit.de > > Dipl.-Wirtschaftsingenieur Jens Kr?mer kraemer at webit.de > > Schnorrstra?e 76 Tel +49 351 46766 0 > > D-01069 Dresden Fax +49 351 46766 66 > > _______________________________________________ > > Ferret-talk mailing list > > Ferret-talk at rubyforge.org > > http://rubyforge.org/mailman/listinfo/ferret-talk---------------------------------------------------------------- This message was sent using IMP, the Internet Messaging Program.
Hmmm, strange happenings are afoot ... Tell me, do you get the same results with ferret 0.3.2? Kasper John McGrath wrote:> get similar issues with the demo, i''m guessing it might have something > to do > with changes to ActiveRecord in Rails 1.1. > > fwiw, my env details again: mac os 10.4.6, mysql 5.0.18, ruby 1.8.4, > rails 1.1, > ferret 0.9, acts_as_ferret from trunk. i removed all other plugins from > my app > in case they were conflicting, and still had the same problems.-- Posted via http://www.ruby-forum.com/.
Hi again, I could reproduce these Results with Ferret 0.9 (Ruby-Version). The C extension bails out with errors instead failures on the same tests, because the MultiReader class, which is used to search across indexes is not accessible from outside of ferret. Using Ferret 0.3.2, all tests except the test_indexed_method (which is expected to fail for now and has nothing to do with the problem here) pass both with Rails 1.0 and Rails 1.1. All the failures happen on an OR query accross multiple Indexes that returns more results than expected, simple one-term queries run fine. A test I added locally, that updates a single Object, saves it again and checks if it''s still only one in the index runs fine in all scenarios (Ferret 0.3.2, 0.9-ruby, 0.9-C, Rails 1.1, Linux). To sum up: - it doesn''t seem to be a Rails issue. - Ferret 0.9/Ruby behaves somewhat different when using OR queries across multiple Indexes, but that should not be related to your problem. - tests creating and searching on a single index seem to pass in your environment (e.g. the content_controller_test) very strange... here''s a test method I just added to content_test.rb (can''t commit it right now) that passes with all variations of Ferret, too. def test_update contents_from_ferret = Content.find_by_contents(''useless'') assert_equal 1, contents_from_ferret.size assert_equal @content.id, contents_from_ferret.first.id @content.description = ''Updated description, still useless'' @content.save contents_from_ferret = Content.find_by_contents(''useless'') assert_equal 1, contents_from_ferret.size assert_equal @content.id, contents_from_ferret.first.id contents_from_ferret = Content.find_by_contents(''updated AND description'') assert_equal 1, contents_from_ferret.size assert_equal @content.id, contents_from_ferret.first.id contents_from_ferret = Content.find_by_contents(''updated OR description'') assert_equal 1, contents_from_ferret.size assert_equal @content.id, contents_from_ferret.first.id end hope we can solve this somehow... Jens On Thu, Apr 06, 2006 at 09:56:52AM +0200, Kasper Weibel wrote:> Hmmm, strange happenings are afoot ... > > Tell me, do you get the same results with ferret 0.3.2? > > Kasper > > John McGrath wrote: > > > get similar issues with the demo, i''m guessing it might have something > > to do > > with changes to ActiveRecord in Rails 1.1. > > > > fwiw, my env details again: mac os 10.4.6, mysql 5.0.18, ruby 1.8.4, > > rails 1.1, > > ferret 0.9, acts_as_ferret from trunk. i removed all other plugins from > > my app > > in case they were conflicting, and still had the same problems. > > -- > Posted via http://www.ruby-forum.com/. > _______________________________________________ > Ferret-talk mailing list > Ferret-talk at rubyforge.org > http://rubyforge.org/mailman/listinfo/ferret-talk-- webit! Gesellschaft f?r neue Medien mbH www.webit.de Dipl.-Wirtschaftsingenieur Jens Kr?mer kraemer at webit.de Schnorrstra?e 76 Tel +49 351 46766 0 D-01069 Dresden Fax +49 351 46766 66