Arno Gross wrote:

> I understand that the search terms for a field with TextIndex are ORed
> and the fields in a search form are ANDed.
> But assume the following:
>  * I have three fields (eg. abstract, content, title) with TextIndex
>  * I have one field (eg. category) with FieldIndex
> When searching I want just give a keyword for the three TextIndex fields
> and a search term for category.
> The applying expression should look like this:
> (abstract=keyword OR content=keyword OR title=keyword) AND
> category=searchTerm
> Any hints?

Create a method or computed attribute called "search_text" that returns the
concatenation of abstract, content and title.

In ZPatterns I'd use the following SkinScript:

    search_text='%s %s %s' % (abstract, content, title)

An equivalent PythonScript as a method of your ZClass would be:

name: search_text
  return '%s %s %s' % (container.abstract, container.content, container.title)

Use a similar method in a python class, replacing "container" with "self".

Set up search_text as a TextIndex in your ZCatalog.

Then, query the catalog with something like:

  Catalog(search_text=keyword_for_query, category=searchTerm)

The standard name for the search_text method or attribute is
PrincipiaSearchSource. That's why PrincipiaSearchSource is a default
TextIndex in a new ZCatalog.

Steve Alexander
Software Engineer
Cat-Box limited

Zope-Dev maillist  -  [EMAIL PROTECTED]
**  No cross posts or HTML encoding!  **
(Related lists - )

Reply via email to