Escaping special characters in ZCTextIndex.QueryParser?
Hi, is it possible to escape parentheses in ZCTextIndex searches? If not, why not and how can I do a simple search in an index bypassing the QueryParser? I have an index where words can contain parentheses and I am unable to enter a query for these words because the QueryParser interprets all parentheses as search expression groupings. Enclosing the words with double quotes has not helped, neither have backslashes... Is there a way other than having to write a new ZCTextIndex? Thanks for any insight Robert
Robert Casties wrote at 2007-11-25 19:32 +0100:
is it possible to escape parentheses in ZCTextIndex searches?
If not, why not and how can I do a simple search in an index bypassing the QueryParser?
I fear nobody of us knows this. Therefore, you must yourself look at the sources. If you need this feature and "ZCTextIndex" does not provide it, then you may use a different text index. I know that with "TextIndexNG3" you can select different parsers (among others a parser that does not interpret '(' and ')') or provide your own one.
I have an index where words can contain parentheses and I am unable to enter a query for these words because the QueryParser interprets all parentheses as search expression groupings.
Then, you will need to change the lexicon as well. Usually, the lexicon breaks words at non alnum characters (with a few exeptions). Again, when I remember right, "TextIndexNG3" allows you to specify additional "word characters" (which do not lead to word braking). -- Dieter
Dieter Maurer wrote:
Robert Casties wrote at 2007-11-25 19:32 +0100:
is it possible to escape parentheses in ZCTextIndex searches?
If not, why not and how can I do a simple search in an index bypassing the QueryParser?
I fear nobody of us knows this.
Therefore, you must yourself look at the sources.
I had a quick look at the QueryParser source before but it wasn't obvious to me. I will have a deeper look again.
If you need this feature and "ZCTextIndex" does not provide it, then you may use a different text index. I know that with "TextIndexNG3" you can select different parsers (among others a parser that does not interpret '(' and ')') or provide your own one.
Is the parser for the search query also pluggable? I will have another look at TextIndexNG.
I have an index where words can contain parentheses and I am unable to enter a query for these words because the QueryParser interprets all parentheses as search expression groupings.
Then, you will need to change the lexicon as well. Usually, the lexicon breaks words at non alnum characters (with a few exeptions).
I have my own splitter for the Lexicon so I think the right words are in the index but I haven't been able to check because I can't search the index... Thanks Robert
Robert Casties wrote:
Hi,
is it possible to escape parentheses in ZCTextIndex searches?
Yes
If not, why not and how can I do a simple search in an index bypassing the QueryParser?
I said Yes :)
I have an index where words can contain parentheses and I am unable to enter a query for these words because the QueryParser interprets all parentheses as search expression groupings.
Enclosing the words with double quotes has not helped, neither have backslashes...
You have to enclose your string with double quotes and then with single quote. So the parser gets the double quotes with the search string The parser does not interpret the string between double quotes. It works for me :) suppose you are searching for: my text (really good text) to search for txt = '"my text (really good text) to search for"' brains = context.portal_catalog(searchableText=text) HTH
Is there a way other than having to write a new ZCTextIndex?
Thanks for any insight
Robert
_______________________________________________ Zope-Dev maillist - Zope-Dev@zope.org http://mail.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://mail.zope.org/mailman/listinfo/zope-announce http://mail.zope.org/mailman/listinfo/zope )
mustapha wrote:
Robert Casties wrote:
Enclosing the words with double quotes has not helped, neither have backslashes...
You have to enclose your string with double quotes and then with single quote. So the parser gets the double quotes with the search string The parser does not interpret the string between double quotes.
Ok, it was my fault :-( The query parser does not interpret expressions in double quotes, it was my special splitter that got called from the QueryParser (I didn't know that the QueryParser does that) that split and deleted all parentheses before the actual search. Now I have changed my splitter and it works as expected. Thanks a lot Robert
participants (3)
-
Dieter Maurer -
mustapha -
Robert Casties