def test_wild():
    qp = default.QueryParser(
        "t", None, [plugins.WhitespacePlugin(),
                    plugins.WildcardPlugin()])
    assert repr(qp.process(
        "a b*c? d")) == "<AndGroup <None:'a'>, <None:Wild 'b*c?'>, <None:'d'>>"
    assert repr(
        qp.process("a * ? d")
    ) == "<AndGroup <None:'a'>, <None:Wild '*'>, <None:Wild '?'>, <None:'d'>>"

    #
    qp = default.QueryParser("content", None)
    q = qp.parse(u("hello *the?e* ?star*s? test"))
    assert len(q) == 4
    assert q[0].__class__ == query.Term
    assert q[0].text == "hello"
    assert q[1].__class__ == query.Wildcard
    assert q[1].text == "*the?e*"
    assert q[2].__class__ == query.Wildcard
    assert q[2].text == "?star*s?"
    assert q[3].__class__ == query.Term
    assert q[3].text == "test"

    #
    qp = default.QueryParser("content", None)
    q = qp.parse(u("*the?e*"))
    assert q.__class__ == query.Wildcard
    assert q.text == "*the?e*"
def test_sq_range():
    p = default.QueryParser("t", None, [
        plugins.WhitespacePlugin(),
        plugins.SingleQuotePlugin(),
        plugins.RangePlugin()
    ])
    assert repr(p.process("['a b' to ']']")) == "<AndGroup <None:['a b' ']']>>"
예제 #3
0
def test_fieldnames():
    p = default.QueryParser("t", None, [plugins.WhitespacePlugin(),
                                        plugins.FieldsPlugin(),
                                        plugins.GroupPlugin()])
    ns = p.process("a:b c d:(e f:(g h)) i j:")
    assert_equal(repr(ns), "<AndGroup <'a':'b'>, <None:'c'>, <AndGroup <'d':'e'>, <AndGroup <'f':'g'>, <'f':'h'>>>, <None:'i'>, <None:'j:'>>")
    assert_equal(repr(p.process("a:b:")), "<AndGroup <'a':'b:'>>")
예제 #4
0
def test_groups():
    p = default.QueryParser("t", None, [plugins.WhitespacePlugin(),
                                        plugins.GroupPlugin()])

    ns = p.process("a ((b c) d) e")
    assert_equal(repr(ns),
                 "<AndGroup <None:'a'>, <AndGroup <AndGroup <None:'b'>, " +
                 "<None:'c'>>, <None:'d'>>, <None:'e'>>")
예제 #5
0
def test_phrase():
    p = default.QueryParser("t", None, [plugins.WhitespacePlugin(),
                                        plugins.PhrasePlugin()])
    assert_equal(repr(p.process('a "b c"')),
                 "<AndGroup <None:'a'>, <None:PhraseNode 'b c'~1>>")
    assert_equal(repr(p.process('"b c" d')),
                 "<AndGroup <None:PhraseNode 'b c'~1>, <None:'d'>>")
    assert_equal(repr(p.process('"b c"')),
                 "<AndGroup <None:PhraseNode 'b c'~1>>")
예제 #6
0
def test_range():
    p = default.QueryParser("t", None, [plugins.WhitespacePlugin(),
                                        plugins.RangePlugin()])
    ns = p.tag("a [b to c} d")
    assert_equal(repr(ns), "<AndGroup <None:'a'>, < >, <None:['b' 'c'}>, < >, <None:'d'>>")

    assert_equal(repr(p.process("a {b to]")), "<AndGroup <None:'a'>, <None:{'b' None]>>")
    assert_equal(repr(p.process("[to c] d")), "<AndGroup <None:[None 'c']>, <None:'d'>>")
    assert_equal(repr(p.process("[to]")), "<AndGroup <None:[None None]>>")
예제 #7
0
 def _query_parser_plugins(self):
     return [
         plugins.WhitespacePlugin(),
         plugins.SingleQuotePlugin(),
         plugins.FieldsPlugin(),
         plugins.PrefixPlugin(),
         plugins.GroupPlugin(),
         plugins.OperatorsPlugin(),
         plugins.BoostPlugin()]
예제 #8
0
def test_phrase():
    p = default.QueryParser("t", None, [plugins.WhitespacePlugin(),
                                        plugins.PhrasePlugin()])
    assert repr(p.process('a "b c"')) == "<AndGroup <None:'a'>, <None:PhraseNode 'b c'~1>>"
    assert repr(p.process('"b c" d')) == "<AndGroup <None:PhraseNode 'b c'~1>, <None:'d'>>"
    assert repr(p.process('"b c"')) == "<AndGroup <None:PhraseNode 'b c'~1>>"

    q = p.parse('alfa "bravo charlie"~2 delta')
    assert q[1].__class__ == query.Phrase
    assert q[1].words == ["bravo", "charlie"]
    assert q[1].slop == 2
예제 #9
0
def test_boost():
    p = default.QueryParser("t", None, [plugins.WhitespacePlugin(),
                                        plugins.GroupPlugin(),
                                        plugins.BoostPlugin()])
    ns = p.tag("a^3")
    assert_equal(repr(ns), "<AndGroup <None:'a'>, <^ 3.0>>")
    ns = p.filterize(ns)
    assert_equal(repr(ns), "<AndGroup <None:'a' ^3.0>>")

    assert_equal(repr(p.process("a (b c)^2.5")), "<AndGroup <None:'a'>, <AndGroup <None:'b'>, <None:'c'> ^2.5>>")
    assert_equal(repr(p.process("a (b c)^.5 d")), "<AndGroup <None:'a'>, <AndGroup <None:'b'>, <None:'c'> ^0.5>, <None:'d'>>")
    assert_equal(repr(p.process("^2 a")), "<AndGroup <None:'^2'>, <None:'a'>>")
    assert_equal(repr(p.process("a^2^3")), "<AndGroup <None:'a^2' ^3.0>>")
예제 #10
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(),
                ]
def test_operators():
    p = default.QueryParser(
        "t", None, [plugins.WhitespacePlugin(),
                    plugins.OperatorsPlugin()])
    ns = p.process("a OR b")
    assert repr(ns) == "<AndGroup <OrGroup <None:'a'>, <None:'b'>>>"
def test_whitespace():
    p = default.QueryParser("t", None, [plugins.WhitespacePlugin()])
    assert repr(
        p.tag("hello there amiga")
    ) == "<AndGroup <None:'hello'>, < >, <None:'there'>, < >, <None:'amiga'>>"
def test_prefix():
    p = default.QueryParser(
        "t", None, [plugins.WhitespacePlugin(),
                    plugins.PrefixPlugin()])
    assert repr(p.process(
        "a b* c")) == "<AndGroup <None:'a'>, <None:'b'*>, <None:'c'>>"
def test_singlequotes():
    p = default.QueryParser(
        "t", None, [plugins.WhitespacePlugin(),
                    plugins.SingleQuotePlugin()])
    assert repr(p.process(
        "a 'b c' d")) == "<AndGroup <None:'a'>, <None:'b c'>, <None:'d'>>"
예제 #15
0
def test_wild():
    p = default.QueryParser("t", None, [plugins.WhitespacePlugin(),
                                        plugins.WildcardPlugin()])
    assert_equal(repr(p.process("a b*c? d")),
                 "<AndGroup <None:'a'>, <None:Wild 'b*c?'>, <None:'d'>>")