[Grok-dev] Assertion error when quering TextIndex

Sebastian Ware sebastian at urbantalk.se
Tue Jun 26 13:25:23 EDT 2007


Maybe I am making a silly mistake, but I am doing this...

from hurry.query.query import Query, Text

class ContentIndexes(grok.Indexes):
     grok.site(ProtonCMS)
     grok.context(interfaces.IProtonObject)
     grok.name('proton_catalog')

     text_body = index.Text(attribute='body')
     body = index.Field(attribute='body')

...and this works...

def search_content(self, search_term):
     result = Query().searchResults(
                      query.Eq(('proton_catalog', 'body'), search_term)
                      )
     return result

...but this gives a ComponentLookupError...

def search_content(self, search_term):
     result = Query().searchResults(
                      Text( ('', 'text_body'), search_term)
                      )
     return result

...the traceback...

   File "/Users/sebastianware/GrokProjects/ProtonCMS/src/protoncms/ 
app.py", line 31, in search_content
     result = Query().searchResults(Text( ('', 'text_body'),  
search_term))
   File "/Users/sebastianware/GrokProjects/ProtonCMS/eggs/ 
hurry.query-0.9.2-py2.4.egg/hurry/query/query.py", line 20, in  
searchResults
     results = query.apply()
   File "/Users/sebastianware/GrokProjects/ProtonCMS/eggs/ 
hurry.query-0.9.2-py2.4.egg/hurry/query/query.py", line 128, in apply
     index = self.getIndex()
   File "/Users/sebastianware/GrokProjects/ProtonCMS/eggs/ 
hurry.query-0.9.2-py2.4.egg/hurry/query/query.py", line 123, in getIndex
     index = super(Text, self).getIndex()
   File "/Users/sebastianware/GrokProjects/ProtonCMS/eggs/ 
hurry.query-0.9.2-py2.4.egg/hurry/query/query.py", line 113, in getIndex
     catalog = zapi.getUtility(ICatalog, self.catalog_name)
   File "/opt/zope3.3/lib/python/zope/component/_api.py", line 207,  
in getUtility
     raise ComponentLookupError(interface, name)
ComponentLookupError: (<InterfaceClass  
zope.app.catalog.interfaces.ICatalog>, '')


Mvh Sebastian

26 jun 2007 kl. 18.43 skrev Kevin Smith:

> Here's some sample code.
>
> # setup index
> class SearchableTextIndex(grok.Indexes):
>    grok.site(MySite)
>    grok.context(ISearchableText)
>
>    searchabletext  = index.Text()
>
> # search function
> from hurry.query.query import Query, Text
> def search_text(text):
>    results = Query().searchResults(
>        Text( ('', 'searchabletext'), text)
>        )
>    return results
>
>
> HTH,
>
> Kevin Smith
>
> Sebastian Ware wrote:
>> I can't find an example in the DocTest that performs a TextIndex  
>> search. It only has FieldIndex, SetIndex and ValueIndex  
>> (hurry.query.0.9.2). I try to mimic the FieldIndex search (that  
>> works) but I get an assertion error.
>>
>> I can see the "text_body' index in the Zope 3 management screens,  
>> and it would shows 3 documents and 53 words indexed.
>>
>> This is the traceback:
>>
>>   File "/Users/sebastianware/GrokProjects/ProtonCMS/src/protoncms/ 
>> app.py", line 32, in content_list
>>     result = Query().searchResults(query.Eq(('proton_catalog',  
>> 'text_body'), search_term))
>>   File "/Users/sebastianware/GrokProjects/ProtonCMS/eggs/ 
>> hurry.query-0.9.2-py2.4.egg/hurry/query/query.py", line 20, in  
>> searchResults
>>     results = query.apply()
>>   File "/Users/sebastianware/GrokProjects/ProtonCMS/eggs/ 
>> hurry.query-0.9.2-py2.4.egg/hurry/query/query.py", line 144, in apply
>>     return self.getIndex().apply((self.value, self.value))
>>   File "/Users/sebastianware/GrokProjects/ProtonCMS/eggs/ 
>> hurry.query-0.9.2-py2.4.egg/hurry/query/query.py", line 134, in  
>> getIndex
>>     assert IFieldIndex.providedBy(index)
>> AssertionError
>>
>> Mvh Sebastian
>>
>>
>>
>> _______________________________________________
>> Grok-dev mailing list
>> Grok-dev at zope.org
>> http://mail.zope.org/mailman/listinfo/grok-dev
>>



More information about the Grok-dev mailing list