David Balmain wrote:

> If I manage to implement the Ferret object database[1] this will be
> simple. Currently though there are two ways to do this. You can index
> all of the Page data in the Book document, presumably in a :page
> field. Or you can store the Book ids in the Pages and create a Book id
> set by scanning through all matching pages.
> 
> [1] http://www.ruby-forum.com/topic/82086#142613

The first option has problems because a book's content will be too large 
for a single field.  It would overrun ferret's maximum field length. 
I'm pretty much doing the second option now.  But, it's drawback is 
pagination gets tough.  I'm not sure how having the ferret object 
database would actually work to solve this problem.  How would your 
queries express what the user intends?  How would it know I want to 
include all the Page objects as apart of a search on Books?  Seems like 
you'd have to specify that sort of thing as options to the search.  Like 
we have to specify eager loading with :include option to find.

>> Is there something in ferret that allows me to scroll through the
>> results one by one and stop when I've reached my limit?
> 
> Sure. Set :limit => :all and call search_each. Then break when you
> reach your limit.

That will work for creating a list of Books, and ensuring a show say 10 
unique books per page.  But, I won't be able to tell what the total 
number of hits were.  Any ideas?

Also it gets hard to do pagination because you can't compute where the 
next window starts and ends.  So how do you know what the offset 
parameter is for the previous pages.  Or the offset for the 9th page is?

Charlie

-- 
Posted via http://www.ruby-forum.com/.
_______________________________________________
Ferret-talk mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/ferret-talk

Reply via email to