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: WITH SELF COMPUTE 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 http://www.cat-box.net