On 10/16/06, Charlie Hubbard <[EMAIL PROTECTED]> wrote:
> David Balmain wrote:
>
> >> If that's the case then it's doable to create this type of search, but
> >> it would make more sense to modify ferret to support this type of query.
> >
> > I don't see a way to add this feature cleanly. It is just as easy for
> > you to do iterate through all the results yourself. Besides, you still
> > haven't explained why you can't add all Pages to each Book document?
> > As I said, the field length limit isn't an issue. This would be the
> > best way to solve this problem.
>
> There is no reason why I couldn't.  I was just trying to figure out a
> way to avoid it.  The big drawback to indexing all the pages onto a
> single field in book would mean I'd have to pick a size of the field up
> front that could be the maximum.  I don't have a lot of data yet, but I
> tried running some tests.  A 94 chapter book it's somewhere around of
> 100,000.  But that's a smaller book.  It's just something you have to
> watch closely which I was trying to avoid is all.  Right now your right
> the best approach is to store it twice.

Set it to Ferret::FIX_INT_MAX. This is the largest number that you set
any of the properties too and effectively sets no limit to the field
length. I'll add :all as an option at some point.

> > In my suggested database approach the search would be the equivalent
> > of a simple SQL join query. By adding a feature like this to
> > acts_as_ferret you'll need to pull all the matching page ids out of
> > the index and peform a much slower SQL query for all books that
> > include those page ids. I'm not sure it is feasible but I'll leave
> > that decision to the acts_as_ferret developers. The best solution is
> > definitely to index all the pages with the book document, even if it
> > means indexing each page twice.
>
> I was thinking it would be more like a SQL union.  In other words the
> query didn't have to match the Book document in order to be included.
> It just had to match the Page object to be included.  For example, say I
> have a book title of Lucene in Action, but you'd expect a query "java"
> would pull that one back.  Java is probably mentioned in the text of
> that book.  I sort of saw it as a multi_index query, since aaf maps the
> objects that way, where you'd first query Book Documents, then query the
> Page documents.  Instead of adding those Page documents to the resulting
> array.  They would only add a new entry if there was a Book not already
> there.  I suppose I could do that in Ruby, but it just seems like it
> might be more optimized if ferret understood this type of relationship
> since it is already iterating over this already.

Trust me, Ferret is complex enough as it is without having to
understand relationships between different documents. I need to draw
the line somewhere. If I want to add features like this I need to
design Ferret from the ground up to be more like a database which is
exactly what I intend to do with the Ferret object database. I hope
that makes sense.

Dave
_______________________________________________
Ferret-talk mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/ferret-talk

Reply via email to