BTW, it *is* possible to use AND, NOT, OR, and ANDNOT in the body of a textindex query, e.g. <dtml-in "Catalog(textindex="foo and bar or farfoo andnot flea")> .... This is not a problem. But the original question (and what is not possible currently), is how to do something like: <dtml-in "Catalog(textindex='foo' AND fieldindex='bar' OR keywordindex=['flop'])"> ...currently the best you can do is: <dtml-in "Catalog(textindex='foo', fieldindex='bar', keywordindex=['flop'])"> ... ... which does an implicit intersection (AND) of all the results from the indexes "textindex", "fieldindex" and "keywordindex". To change this behavior, you need to do things like: <dtml-let a="Catalog(textindex='foo')"> <dtml-let b="Catalog(fieldindex='bar')"> <dtml-let c="Catalog(keywordindex=['flop'])"> <dtml-let result="a + b + c"> <dtml-in result> ..... the above example is a way to service a query like "textindex='foo' OR fieldindex='bar' OR keywordindex=['flop']". - C Chris McDonough wrote:
Marco Nova wrote:
DC has no no concrete plans to implement operators or precedence in catalog queries, although I think it's a really super-worthwhile idea. We're currently focusing on the things in the Zope 2.4 plan (see http://dev.zope.org/Resources/zope_240_plan.html). If someone wanted to try to implement it, they could create a fishbowl project and I can provide assistance.
Why don't integrate already working search engine such as pls (www.pls.com) ? It shouldn't be so much difficult to integrate.
It would not be possible to do field and keyword index queries against methods of Zope objects with a third-party indexer. It would additionally not be possible to full-text-index anything but the results of a rendered HTML page.
If ZCatalog did nothing but create full text indexes of rendered HTML, I think we'd be all for going with a third-party search engine instead of continuing to maintain it. But ZCatalog is not just about searching text. ZCatalog currently lets you relate objects in a Zope instance to each other in ways that aren't possible without it. For example, you can catalog a bunch of different kinds of objects, and perform a catalog query to retrieve only DTML Document objects. Likewise, you can create and index and subsequently perform a query that lets you get at objects which have an attribute "foo" that starts with the letter "g". This kind of granularity is not possible with nonintegrated indexers.
Of course that doesn't mean you can't use htdig or pls to index a Zope site if that's what you'd like to do...