search term parsing like Google/Gmail
robert.kern at gmail.com
Thu Sep 10 19:29:53 CEST 2009
On 2009-09-09 16:37 PM, Randy Syring wrote:
> I am looking for a string parser that works kind of like Google's or
> Gmail's advanced search capabilities. So it would turn something like this:
> (subject:"hi there" from:[tim, tom, -fred]) or (subject:foobar from:sam)
> into a python structure that could be used. I don't really care so much
> about the search syntax except that easy and intuitive is best for
> users. Does something like this exist?
The Whoosh search library uses pyparsing to parse its queries. It does not
handle the  brackets, but it handles the rest. I am sure that Matt Chaput
would accept a contribution of such an enhancement, though.
In : from whoosh import qparser
In : p = qparser.QueryParser('body')
In : p.parse(u'subject:"hi there" or (subject:foobar from:sam)')
Out: Or([Phrase(u'subject', [u'hi', u'there']), And([Term(u'subject',
u'foobar', boost=1.0), Term(u'from', u'sam', boost=1.0)])])
"I have come to believe that the whole world is an enigma, a harmless enigma
that is made terrible by our own mad attempt to interpret it as though it had
an underlying truth."
-- Umberto Eco
More information about the Python-list