def test_quoted_prefix(): qp = default.QueryParser("f", None) expr = r"(^|(?<=[ (]))(?P<text>\w+|[*]):" qp.replace_plugin(plugins.FieldsPlugin(expr)) q = qp.parse(u('foo url:http://apple.com:8080/bar* baz')) assert isinstance(q, query.And) assert q[0] == query.Term("f", "foo") assert q[1] == query.Prefix("url", "http://apple.com:8080/bar") assert q[2] == query.Term("f", "baz") assert len(q) == 3
def default_set(self): """Returns the default list of plugins to use. """ from whoosh.qparser import plugins return [plugins.WhitespacePlugin(), plugins.SingleQuotePlugin(), plugins.FieldsPlugin(), plugins.WildcardPlugin(), plugins.PhrasePlugin(), plugins.RangePlugin(), plugins.GroupPlugin(), plugins.OperatorsPlugin(), plugins.BoostPlugin(), plugins.EveryPlugin(), ]
def test_groups_with_range(): p = default.QueryParser("t", None, [ plugins.FieldsPlugin(), plugins.GtLtPlugin(), plugins.GroupPlugin(), plugins.OperatorsPlugin(), plugins.PhrasePlugin(), plugins.RangePlugin(), plugins.RegexPlugin() ]) ns = p.process('a:b OR e:>=5 g:<6') assert repr( ns ) == "<AndGroup <OrGroup <'a':'b'>, <'e':['5' None]>>, <'g':[None '6'}>>" ns = p.process('a:b OR (e:>=5 g:<6)') assert repr( ns ) == "<AndGroup <OrGroup <'a':'b'>, <AndGroup <'e':['5' None]>, <'g':[None '6'}>>>>"