Ejemplo n.º 1
0
 def test_mutability(self):
     search = Search(indexes=['company'], config=SearchConfig)
     search.match('Yandex')
     self.assertEqual(
         search.lex(),
         "SELECT * FROM company"
     )
     search = search.match('Yandex')
     self.assertEqual(
         search.lex(),
         "SELECT * FROM company WHERE MATCH('Yandex')"
     )
Ejemplo n.º 2
0
 def test_with_options(self):
     search = Search(['company'], config=SearchConfig)
     search = (
         search
         .match('Yandex')
         .select('id', 'name')
         .options(
             ranker='proximity',
             max_matches=100,
             field_weights={'name': 100},
         )
         .order_by('name', 'desc')
     )
     correct_options_qls = [
         "max_matches=100, ranker=proximity, field_weights=(name=100)",
         "max_matches=100, field_weights=(name=100), ranker=proximity",
         "ranker=proximity, field_weights=(name=100), max_matches=100",
         "ranker=proximity, max_matches=100, field_weights=(name=100)",
         "field_weights=(name=100), max_matches=100, ranker=proximity",
         "field_weights=(name=100), ranker=proximity, max_matches=100",
     ]
     correct_qls = [
         " ".join((
             "SELECT id, name FROM company WHERE MATCH('Yandex') ORDER BY name DESC OPTION",
             opt
         ))
         for opt in correct_options_qls
     ]
     self.assertIn(search.lex(), correct_qls)
Ejemplo n.º 3
0
 def test_with_params(self):
     search = Search(['company'], config=SearchConfig)
     search = search.match('Yandex').limit(0, 100).order_by('name', 'desc')
     self.assertEqual(
         search.lex(),
         "SELECT * FROM company WHERE MATCH('Yandex') ORDER BY name DESC LIMIT 0,100"
     )
Ejemplo n.º 4
0
 def test_with_grouping(self):
     search = Search(['company'], config=SearchConfig)
     search = search.match('Yandex').select(Count()).group_by('date_created')
     self.assertEqual(
         search.lex(),
         "SELECT COUNT(*) AS num FROM company WHERE MATCH('Yandex') GROUP BY date_created"
     )
Ejemplo n.º 5
0
 def test_update_syntax(self):
     search = Search(['company'], config=SearchConfig)
     search = search.match('Yandex').update(products=(5,2)).filter(id__gt=1)
     self.assertEqual(
         search.lex(),
         "UPDATE company SET products=(5,2) WHERE MATCH('Yandex') AND id>1"
     )
Ejemplo n.º 6
0
 def test_with_raw_attr(self):
     search = Search(['company'], config=SearchConfig)
     search = search.match('Yandex').select(RawAttr('@weight*10', 'skey'))
     self.assertEqual(
         search.lex(),
         "SELECT @weight*10 AS skey FROM company WHERE MATCH('Yandex')"
     )
Ejemplo n.º 7
0
 def test_with_double_match(self):
     search = Search(['company'], config=SearchConfig)
     search = search.match('ОАО').match('ТНК')
     self.assertEqual(
         search.lex(),
         "SELECT * FROM company WHERE MATCH('ОАО ТНК')"
     )
Ejemplo n.º 8
0
 def test_with_or_filters_and_fields(self):
     correct_qls = [
         "SELECT id, (id>=100 OR id=1) AS cnd FROM company WHERE MATCH('Yandex') AND cnd>0",
         "SELECT id, (id=1 OR id>=0) AS cnd FROM company WHERE MATCH('Yandex') AND cnd>0",
     ]
     search = Search(['company'], config=SearchConfig).select('id')
     search = search.match('Yandex').filter(OR(id__gte=100, id__eq=1))
     self.assertIn(search.lex(), correct_qls)
Ejemplo n.º 9
0
 def test_with_select(self):
     search = Search(indexes=['company'], config=SearchConfig)
     search = search.select('id', 'date_created')
     search = search.match('Yandex')
     self.assertEqual(
         search.lex(),
         "SELECT id, date_created FROM company WHERE MATCH('Yandex')"
     )
Ejemplo n.º 10
0
 def test_with_time_filter(self):
     search = Search(['company'], config=SearchConfig)
     search = search.match('Yandex').filter(date_created__lte=datetime.date.today())
     today = datetime.date.today()
     sxql = (
         "SELECT * FROM company WHERE MATCH('Yandex') "
         "AND date_created<=%s" % unix_timestamp(today)
     )
     self.assertEqual(search.lex(), sxql)
Ejemplo n.º 11
0
 def test_with_multiindex(self):
     search = Search(
         indexes=['company', 'company_delta'],
         config=SearchConfig
     )
     search = search.filter(id__gte=100)
     self.assertEqual(
         search.lex(),
         "SELECT * FROM company, company_delta WHERE id>=100"
     )