Exemplo n.º 1
0
    def test_facets(self):
        s = SearchOptions()
        f = search.NumericFacet('numfield')
        p = s._gen_params()
        self.assertRaises(ValueError, p.facets.__setitem__, 'facetName', f)
        self.assertRaises(TypeError, f.add_range, 'range1')

        p.facets['facetName'] = f.add_range('range1', min=123, max=321)
        self.assertTrue('facetName' in p.facets)

        f = search.DateFacet('datefield')
        f.add_range('r1', start='2012', end='2013')
        f.add_range('r2', start='2014')
        f.add_range('r3', end='2015')
        exp = {
            'field':
            'datefield',
            'date_ranges': [{
                'name': 'r1',
                'start': '2012',
                'end': '2013'
            }, {
                'name': 'r2',
                'start': '2014'
            }, {
                'name': 'r3',
                'end': '2015'
            }]
        }
        self.assertEqual(exp, f.encodable)

        f = search.TermFacet('termfield')
        self.assertEqual({'field': 'termfield'}, f.encodable)
        f.limit = 10
        self.assertEqual({'field': 'termfield', 'size': 10}, f.encodable)
Exemplo n.º 2
0
    def test_cluster_search(self  # type: SearchTest
                            ):
        if self.is_mock:
            raise SkipTest("F.T.S. not supported by mock")
        most_common_term_max = 10
        initial = datetime.datetime.now()
        x = self.try_n_times_decorator(self.cluster.search_query, 10, 10)(
            "beer-search", search.TermQuery("category"),
            search.SearchOptions(
                facets={
                    'fred': search.TermFacet('category', most_common_term_max)
                }))  # type: SearchResult
        r = x.rows()
        print(r)
        first_entry = x.rows()[0]
        self.assertEqual("brasserie_de_brunehaut-mont_st_aubert",
                         first_entry.id)
        SearchResultTest._check_search_result(self, initial, 6, x)
        fred_facet = x.facets()['fred']
        self.assertIsInstance(fred_facet, search.SearchFacetResult)

        self.assertRaises(couchbase.exceptions.SearchException,
                          self.cluster.search_query,
                          "beer-search",
                          search.TermQuery("category"),
                          facets={'fred': None})
Exemplo n.º 3
0
 def test_search(self  # type: Base
                 ):
     cluster = self.gen_cluster(**self.make_connargs())
     yield from (cluster.on_connect() or asyncio.sleep(0.01))
     try:
         it = cluster.search_query(
             "beer-search",
             SEARCH.TermQuery("category"),
             facets={'fred': SEARCH.TermFacet('category', 10)})
         yield from it.future
         data = list(it)
         self.assertIsInstance(it, AsyncSearchResult)
         self.assertEqual(10, len(data))
     except SearchException as e:
         if isinstance(e.inner_cause,
                       NotSupportedException) and self.is_mock:
             raise SkipTest("Not supported")
Exemplo n.º 4
0
    def testBatchedSearch(self  # type: Base
                          ):
        if self.is_mock:
            raise SkipTest("No analytics on mock")
        cb = self.make_connection()
        d = cb.search_query("beer-search",
                            SEARCH.TermQuery("category"),
                            facets={'fred': SEARCH.TermFacet('category', 10)})

        def verify(o):
            logging.error("Called back")

            self.assertIsInstance(o, BatchedSearchResult)
            rows = [r for r in o]
            self.assertEqual(10, len(rows))
            logging.error("End of callback")

        result = d.addCallback(verify)
        logging.error("ready to return")
        return result
    def test_cluster_search_term_facets(self  # type: SearchTest
                            ):
        if self.is_mock:
            raise SkipTest("F.T.S. not supported by mock")

        facet_name = 'beers'
        facet = search.TermFacet('category', 10)
        x = self.try_n_times_decorator(self.cluster.search_query, 10, 10)("beer-search-index",
                                            search.TermQuery("north"),
                                            search.SearchOptions(facets={
                                                            facet_name:facet
                                                        }))  # type: SearchResult

        x.rows()
        result_facet = x.facets()[facet_name]
        self.assertIsInstance(result_facet, search.SearchFacetResult)
        self.assertEqual(facet_name, result_facet.name)
        self.assertEqual(facet.field, result_facet.field)
        self.assertGreaterEqual(facet.limit, len(result_facet.terms))

        self.assertRaises(couchbase.exceptions.SearchException, self.cluster.search_query,
                          "beer-search-index",
                          search.TermQuery("north"),
                          facets={'beers': None})
Exemplo n.º 6
0
    def test_params(self):
        self.assertEqual({}, SearchOptions().as_encodable('ix'))
        self.assertEqual({'size': 10},
                         SearchOptions(limit=10).as_encodable('ix'))
        self.assertEqual({'from': 100},
                         SearchOptions(skip=100).as_encodable('ix'))

        self.assertEqual({'explain': True},
                         SearchOptions(explain=True).as_encodable('ix'))

        self.assertEqual(
            {'highlight': {
                'style': 'html'
            }},
            SearchOptions(
                highlight_style=search.HighlightStyle.Html).as_encodable('ix'))

        self.assertEqual(
            {'highlight': {
                'style': 'ansi',
                'fields': ['foo', 'bar', 'baz']
            }},
            SearchOptions(highlight_style=search.HighlightStyle.Ansi,
                          highlight_fields=['foo', 'bar',
                                            'baz']).as_encodable('ix'))

        self.assertEqual(
            {'fields': ['foo', 'bar', 'baz']},
            SearchOptions(fields=['foo', 'bar', 'baz']).as_encodable('ix'))

        self.assertEqual(
            {'sort': ['f1', 'f2', '-_score']},
            SearchOptions(sort=['f1', 'f2', '-_score']).as_encodable('ix'))

        self.assertEqual(
            {'sort': ['f1', 'f2', '-_score']},
            SearchOptions(sort=['f1', 'f2', '-_score']).as_encodable('ix'))

        p = SearchOptions(
            facets={
                'term':
                search.TermFacet('somefield', limit=10),
                'dr':
                search.DateFacet('datefield').add_range(
                    'name', 'start', 'end'),
                'nr':
                search.NumericFacet('numfield').add_range('name2', 0.0, 99.99)
            })
        exp = {
            'facets': {
                'term': {
                    'field': 'somefield',
                    'size': 10
                },
                'dr': {
                    'field':
                    'datefield',
                    'date_ranges': [{
                        'name': 'name',
                        'start': 'start',
                        'end': 'end'
                    }]
                },
                'nr': {
                    'field': 'numfield',
                    'numeric_ranges': [{
                        'name': 'name2',
                        'min': 0.0,
                        'max': 99.99
                    }]
                },
            }
        }
        self.assertEqual(exp, p.as_encodable('ix'))