示例#1
0
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
示例#2
0
    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(),
                ]
示例#3
0
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'}>>>>"