[Zope] Search first letter of a string

Casey Duncan cduncan@kaivo.com
Wed, 20 Jun 2001 13:16:41 -0600


James van der Veen wrote:
> 
> Hi everybody,
> 
> I have a question most of you will probably know the awnser of...So les't
> start.
> 
> I have a site where people can add information of a company this gets into
> the catalog. I have all the letters of thre alphabeth listed.
> Now if a person clicks the letter I would want to search for all the
> companys with starting letter the person just clicked.
> 
> So I guess my question is how can I search for the fist letter of a sting in
> the catalog.
> 
> Can somone help me with this?
> 
> Greetz,
> James
> 

Although TextIndexes support something like this, I doubt they would
work the way you want if the string contains multiple words. I think the
way to do it is to create a method or python script that returns the
first letter of the property and index on it.

Lets say your property is called spam, create a script (as a method of
the ZClass if it is one or just in the Zope roo folder) called
'first_letter_of_spam' or some such. The following line of code will
return the first letter:

return context.spam[0]

of if it is a ZClass method:

return container.spam[0]

Then create a FieldIndex in your ZCatalog called first_letter_of_spam
(matching the script name) and update the catalog. Then you can easily
formulate a search by first letter.

hth,
-- 
| Casey Duncan
| Kaivo, Inc.
| cduncan@kaivo.com
`------------------>