def test_func(self): f = func.recip(func.sum('rank', 10), 1, 1, 0) self.assertEqual(str(f), 'recip(sum(rank,10),1,1,0)') f = func.linear('rank', func.sqrt(func.sum(func.pow('x'), func.pow('y'))), 10) self.assertEqual(str(f), 'linear(rank,sqrt(sum(pow(x),pow(y))),10)') f = func.if_(func.exists('name'), 100, 0) self.assertEqual(str(f), 'if(exists(name),100,0)') f = func.termfreq('name', "test term '111'") self.assertEqual(str(f), "termfreq(name,'test term \\'111\\'')") f = func.undefined('name', 'null') self.assertEqual(str(f), 'undefined(name,null)') f = func.exists('name', 5, 0) * 2 + func.ord('popularity') * 0.5 + func.recip( func.rord('price'), 1, 1000, 1000) * 0.3 self.assertEqual( str(f), 'exists(name,5,0)^2 ord(popularity)^0.5 recip(rord(price),1,1000,1000)^0.3' ) f = func.min(func.geodist('store', 37.7, -122.4), func.geodist('store', 39.7, -105)) self.assertEqual( str(f), 'min(geodist(store,37.7,-122.4),geodist(store,39.7,-105))') self.assertRaises(TypeError, lambda: func.min('a', 'b') * '10') self.assertRaises(TypeError, lambda: func.min('a', 'b') + '10') self.assertRaises( TypeError, lambda: func.min('a', 'b') + func.max('a', 'b') + '10')
def test_func(self): f = func.recip(func.sum('rank',10), 1, 1, 0) self.assertEqual(str(f), 'recip(sum(rank,10),1,1,0)') f = func.linear('rank', func.sqrt(func.sum(func.pow('x'), func.pow('y'))), 10) self.assertEqual(str(f), 'linear(rank,sqrt(sum(pow(x),pow(y))),10)') f = func.if_(func.exists('name'), 100, 0) self.assertEqual(str(f), 'if(exists(name),100,0)') f = func.termfreq('name', "test term '111'") self.assertEqual(str(f), "termfreq(name,'test term \\'111\\'')") f = func.undefined('name', 'null') self.assertEqual(str(f), 'undefined(name,null)') f = func.exists('name', 5, 0) * 2 + func.ord('popularity') * 0.5 + func.recip(func.rord('price'), 1, 1000, 1000) * 0.3 self.assertEqual(str(f), 'exists(name,5,0)^2 ord(popularity)^0.5 recip(rord(price),1,1000,1000)^0.3') f = func.min(func.geodist('store', 37.7, -122.4), func.geodist('store', 39.7, -105)) self.assertEqual(str(f), 'min(geodist(store,37.7,-122.4),geodist(store,39.7,-105))') self.assertRaises(TypeError, lambda: func.min('a', 'b') * '10') self.assertRaises(TypeError, lambda: func.min('a', 'b') + '10') self.assertRaises(TypeError, lambda: func.min('a', 'b') + func.max('a', 'b') + '10')
def test_query(self): q = SolrSearcher().search().dismax() raw_query = str(q) self.assertTrue('q=%s' % quote_plus('*:*') in raw_query) self.assertFalse('defType=dismax' in raw_query) q = SolrSearcher().search('test query').dismax() raw_query = str(q) self.assertTrue('q=%s' % quote_plus('test query') in raw_query) self.assertTrue('defType=dismax' in raw_query) q = ( SolrSearcher().search(X(name='test') | X(name__startswith='test')) .dismax() .qf([('name', 10), ('keywords', 2)]) .bf((func.linear('rank',1,0) ^ 100) + func.recip(func.ms('NOW/HOUR', 'dt_created'), 3.16e-11, 1, 1)) .field_weight('name', 5) ) raw_query = str(q) self.assertTrue('q=%s' % quote_plus('(name:test OR name:test*)') in raw_query) self.assertTrue('qf=%s' % quote_plus('name^5 keywords^2') in raw_query) self.assertTrue('bf=%s' % quote_plus('linear(rank,1,0)^100 recip(ms(NOW/HOUR,dt_created),3.16e-11,1,1)') in raw_query)
def test_query(self): q = SolrSearcher().search().dismax() raw_query = str(q) self.assertTrue('q=%s' % quote_plus('*:*') in raw_query) self.assertFalse('defType=dismax' in raw_query) q = SolrSearcher().search('test query').dismax() raw_query = str(q) self.assertTrue('q=%s' % quote_plus('test query') in raw_query) self.assertTrue('defType=dismax' in raw_query) q = (SolrSearcher().search( X(name='test') | X(name__startswith='test')).dismax().qf([ ('name', 10), ('keywords', 2) ]).bf((func.linear('rank', 1, 0) ^ 100) + func.recip(func.ms('NOW/HOUR', 'dt_created'), 3.16e-11, 1, 1) ).field_weight('name', 5)) raw_query = str(q) self.assertTrue('q=%s' % quote_plus('(name:test OR name:test*)') in raw_query) self.assertTrue('qf=%s' % quote_plus('name^5 keywords^2') in raw_query) self.assertTrue('bf=%s' % quote_plus( 'linear(rank,1,0)^100 recip(ms(NOW/HOUR,dt_created),3.16e-11,1,1)') in raw_query)
def test_func(self): f = func.linear('rank', func.sqrt(func.sum(func.pow('x'), func.pow('y'))), 10) self.assertEqual(str(f), 'linear(rank,sqrt(sum(pow(x),pow(y))),10)') f = func.if_(func.exists('name'), 100, 0) self.assertEqual(str(f), 'if(exists(name),100,0)') f = (func.exists('name', 5, 0) ^ 2) + (func.ord('popularity') ^ 0.5) + (func.recip(func.rord('price'), 1, 1000, 1000) ^ 0.3) self.assertEqual(str(f), 'exists(name,5,0)^2 ord(popularity)^0.5 recip(rord(price),1,1000,1000)^0.3')
def test_func(self): f = func.linear('rank', func.sqrt(func.sum(func.pow('x'), func.pow('y'))), 10) self.assertEqual(str(f), 'linear(rank,sqrt(sum(pow(x),pow(y))),10)') f = func.if_(func.exists('name'), 100, 0) self.assertEqual(str(f), 'if(exists(name),100,0)') f = (func.exists('name', 5, 0) ^ 2) + (func.ord('popularity') ^ 0.5) + ( func.recip(func.rord('price'), 1, 1000, 1000) ^ 0.3) self.assertEqual( str(f), 'exists(name,5,0)^2 ord(popularity)^0.5 recip(rord(price),1,1000,1000)^0.3' )