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.

  http://whoosh.ca/

In [9]: from whoosh import qparser

In [10]: p = qparser.QueryParser('body')

In [11]: p.parse(u'subject:"hi there" or (subject:foobar from:sam)')
Out[11]: 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)])])

--
Robert Kern

"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

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to