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' ']']>>"
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:'>>")
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'>>")
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>>")
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]>>")
def _query_parser_plugins(self): return [ plugins.WhitespacePlugin(), plugins.SingleQuotePlugin(), plugins.FieldsPlugin(), plugins.PrefixPlugin(), plugins.GroupPlugin(), plugins.OperatorsPlugin(), plugins.BoostPlugin()]
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
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>>")
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'>>"
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'>>")