Esempio n. 1
0
def facets():
    """
    returns facet sets for a search query
    """
    form = QueryForm.init_with_defaults(request.values)
    if form.validate():
        query_components = QueryBuilderSearch.build(form, request.values, facets_components=True)
        resp = solr.query(**query_components)
        return render_template('facets_sublevel.html', resp=resp, facet_field_interf_id=query_components['facet_field_interf_id'] )
Esempio n. 2
0
    def test_only_query(self):
        """basic case"""
        with self.app.test_request_context('/search/?q=+author%3A"civano"'):
            expected = deepcopy(QueryBuilderSearch.DEFAULT_COMPONENTS)
            expected['q'] = u'( author:"civano")'
            expected['ui_q'] = u' author:"civano"'

            form = QueryForm.init_with_defaults(request.values)
            self.assertEqual(QueryBuilderSearch.build(form, request.values), expected)
Esempio n. 3
0
    def test_query_with_default_params_13(self):
        """with article only property"""
        with self.app.test_request_context('/search/?q=+author%3A"civano"&db_f=astronomy&article=y'):
            expected = deepcopy(QueryBuilderSearch.DEFAULT_COMPONENTS)
            expected['q'] = u'( author:"civano") AND NOT property:NONARTICLE AND database:"astronomy"'
            expected['ui_q'] = u' author:"civano"'
            expected['ui_filters'] = [u'database:"astronomy"']

            form = QueryForm.init_with_defaults(request.values)
            self.assertEqual(QueryBuilderSearch.build(form, request.values), expected)
Esempio n. 4
0
    def test_query_with_default_params_02(self):
        """including database filter (uppercase)"""
        with self.app.test_request_context('/search/?q=+author%3A"civano"&db_f=ASTRONOMY'):
            expected = deepcopy(QueryBuilderSearch.DEFAULT_COMPONENTS)
            expected['q'] = u'( author:"civano") AND database:"ASTRONOMY"'
            expected['ui_q'] = u' author:"civano"'
            expected['ui_filters'] = [u'database:"ASTRONOMY"']

            form = QueryForm.init_with_defaults(request.values)
            self.assertEqual(QueryBuilderSearch.build(form, request.values), expected)
Esempio n. 5
0
    def test_query_with_default_params_11(self):
        """with journal abbr fitler (wrong syntax)"""
        with self.app.test_request_context('/search/?q=+author%3A"civano"+bibstem%3A"ApJ%3B+AJ"&db_f=astronomy'):
            expected = deepcopy(QueryBuilderSearch.DEFAULT_COMPONENTS)
            expected['q'] = u'( author:"civano" bibstem:"ApJ; AJ") AND database:"astronomy"'
            expected['ui_q'] = u' author:"civano" bibstem:"ApJ; AJ"'
            expected['ui_filters'] = [u'database:"astronomy"',]

            form = QueryForm.init_with_defaults(request.values)
            self.assertEqual(QueryBuilderSearch.build(form, request.values), expected)
Esempio n. 6
0
    def test_query_with_default_params_12(self):
        """with refereed property"""
        with self.app.test_request_context('/search/?q=+author%3A"civano"&db_f=astronomy&prop_f=refereed'):
            expected = deepcopy(QueryBuilderSearch.DEFAULT_COMPONENTS)
            expected['q'] = u'( author:"civano") AND property:"refereed" AND database:"astronomy"'
            expected['ui_q'] = u' author:"civano"'
            expected['ui_filters'] = [u'property:"refereed"', u'database:"astronomy"']

            form = QueryForm.init_with_defaults(request.values)
            self.assertEqual(QueryBuilderSearch.build(form, request.values), expected)
Esempio n. 7
0
    def test_query_with_default_params_08(self):
        """with date range"""
        with self.app.test_request_context('/search/?q=+author%3A"civano"&db_f=astronomy&month_from=09&year_from=2009&year_to=2010'):
            expected = deepcopy(QueryBuilderSearch.DEFAULT_COMPONENTS)
            expected['q'] = u'( author:"civano") AND pubdate:[2009-09-00 TO 2010-12-00] AND database:"astronomy"'
            expected['ui_q'] = u' author:"civano"'
            expected['ui_filters'] = [u'pubdate:[2009-09-00 TO 2010-12-00]', u'database:"astronomy"',]

            form = QueryForm.init_with_defaults(request.values)
            self.assertEqual(QueryBuilderSearch.build(form, request.values), expected)
Esempio n. 8
0
    def test_query_with_default_params_04(self):
        """2nd order query"""
        with self.app.test_request_context('/search/?q=hot(galaxy+clusters)&db_f=astronomy'):
            expected = deepcopy(QueryBuilderSearch.DEFAULT_COMPONENTS)
            expected['q'] = u'(hot(galaxy clusters)) AND database:"astronomy"'
            expected['ui_q'] = u'hot(galaxy clusters)'
            expected['ui_filters'] = [u'database:"astronomy"']

            form = QueryForm.init_with_defaults(request.values)
            self.assertEqual(QueryBuilderSearch.build(form, request.values), expected)
Esempio n. 9
0
    def test_query_with_default_params_03(self):
        """non-default database filter"""
        with self.app.test_request_context('/search/?q=+author%3A"civano"&db_f=physics'):
            expected = deepcopy(QueryBuilderSearch.DEFAULT_COMPONENTS)
            expected['q'] = u'( author:"civano") AND database:"physics"'
            expected['ui_q'] = u' author:"civano"'
            expected['ui_filters'] = [u'database:"physics"']

            form = QueryForm.init_with_defaults(request.values)
            self.assertEqual(QueryBuilderSearch.build(form, request.values), expected)
Esempio n. 10
0
    def test_query_with_default_params_19(self):
        """with facet selection"""
        with self.app.test_request_context('/search/?q=*&db_f=astronomy&year_f=[2000 TO 2010]'):
            expected = deepcopy(QueryBuilderSearch.DEFAULT_COMPONENTS)
            expected['q'] = u'(*) AND year:[2000 TO 2010] AND database:"astronomy"'
            expected['ui_q'] = u'*'
            expected['ui_filters'] = [u'year:[2000 TO 2010]', 
                                   u'database:"astronomy"',]

            form = QueryForm.init_with_defaults(request.values)
            self.assertEqual(QueryBuilderSearch.build(form, request.values), expected)
Esempio n. 11
0
    def test_query_with_default_params_16(self):
        """with facet selection"""
        with self.app.test_request_context('/search/?q=author%3A"Civano"&db_f=astronomy&aut_f=-("1%2FCivano%2C+F%2FCivano%2C Francesca M."+OR+"1%2FElvis%2C M%2FElvis%2C Martin")'):
            expected = deepcopy(QueryBuilderSearch.DEFAULT_COMPONENTS)
            expected['q'] = u'(author:"Civano") AND NOT author_facet_hier:("1/Civano, F/Civano, Francesca M." OR "1/Elvis, M/Elvis, Martin") AND database:"astronomy"'
            expected['ui_q'] = u'author:"Civano"'
            expected['ui_filters'] = [u'-author_facet_hier:("1/Civano, F/Civano, Francesca M." OR "1/Elvis, M/Elvis, Martin")',
                                    u'database:"astronomy"',]

            form = QueryForm.init_with_defaults(request.values)
            self.assertEqual(QueryBuilderSearch.build(form, request.values), expected)
Esempio n. 12
0
    def test_query_with_default_params_26(self):
        """test no fulltext"""
        with self.app.test_request_context('/search/?q=civano&no_ft=1'):
            expected = deepcopy(QueryBuilderSearch.DEFAULT_COMPONENTS)
            expected['q'] = u'(civano)'
            expected['ui_q'] = u'civano'
            expected['ui_filters'] = []
            expected['query_fields'] = config.SOLR_SEARCH_DEFAULT_QUERY_FIELDS_METADATA_ONLY

            form = QueryForm.init_with_defaults(request.values)
            actual = QueryBuilderSearch.build(form, request.values)
            self.assertEqual(actual, expected)
Esempio n. 13
0
    def test_query_with_default_params_25(self):
        """test topn operator"""
        with self.app.test_request_context('/search/?q=+author%3A"civano"&db_f=astronomy&re_sort_type=POPULARITY&re_sort_dir=asc&topn=1000'):
            expected = deepcopy(QueryBuilderSearch.DEFAULT_COMPONENTS)
            expected['q'] = u'topn(1000, (( author:"civano") AND database:"astronomy"), "read_count asc")'
            expected['ui_q'] = u' author:"civano"'
            expected['ui_filters'] = [u'database:"astronomy"']
            expected['sort'] = None

            form = QueryForm.init_with_defaults(request.values)
            actual = QueryBuilderSearch.build(form, request.values)
            self.assertEqual(actual, expected)
Esempio n. 14
0
    def test_query_with_default_params_22(self):
        """with different row count"""
        with self.app.test_request_context('/search/?q=+author%3A"civano"&db_f=astronomy&nr=33'):
            expected = deepcopy(QueryBuilderSearch.DEFAULT_COMPONENTS)
            expected['q'] = u'( author:"civano") AND database:"astronomy"'
            expected['ui_q'] = u' author:"civano"'
            expected['ui_filters'] = [u'database:"astronomy"']
            expected['rows'] = "33"

            form = QueryForm.init_with_defaults(request.values)
            actual = QueryBuilderSearch.build(form, request.values)
            self.assertEqual(actual, expected)
Esempio n. 15
0
    def test_query_with_default_params_14(self):
        """with facet selection"""
        with self.app.test_request_context('/search/?q=author%3A"Civano"&aut_f=0%2FComastri%2C+A&db_f=astronomy&grant_f=0%2FNASA-HQ'):
            expected = deepcopy(QueryBuilderSearch.DEFAULT_COMPONENTS)
            expected['q'] = u'(author:"Civano") AND grant_facet_hier:"0/NASA-HQ" AND author_facet_hier:"0/Comastri, A" AND database:"astronomy"'
            expected['ui_q'] = u'author:"Civano"'
            expected['ui_filters'] = [u'grant_facet_hier:"0/NASA-HQ"',
                                    u'author_facet_hier:"0/Comastri, A"',
                                    u'database:"astronomy"']

            form = QueryForm.init_with_defaults(request.values)
            self.assertEqual(QueryBuilderSearch.build(form, request.values), expected)
Esempio n. 16
0
def facets():
    """
    returns facet sets for a search query
    """
    form = QueryForm.init_with_defaults(request.values)
    if form.validate():
        query_components = QueryBuilderSearch.build(form, request.values, facets_components=True)
        try:
            resp = solr.query(**query_components)
        except Exception, e:
            raise AdsabsSolrqueryException("Error communicating with search service", sys.exc_info())
        return render_template('facets_sublevel.html', resp=resp, facet_field_interf_id=query_components['facet_field_interf_id'] )
Esempio n. 17
0
    def test_query_with_default_params_27(self):
        """test no fulltext"""
        with self.app.test_request_context('/search/?q=civano&no_ft=full^1.3'):
            expected = deepcopy(QueryBuilderSearch.DEFAULT_COMPONENTS)
            expected['q'] = u'(civano)'
            expected['ui_q'] = u'civano'
            expected['ui_filters'] = []
            expected['query_fields'] = u'full^1.3'

            form = QueryForm.init_with_defaults(request.values)
            actual = QueryBuilderSearch.build(form, request.values)
            self.assertEqual(actual, expected)
Esempio n. 18
0
    def test_query_with_default_params_17(self):
        """with facet selection"""
        with self.app.test_request_context('/search/?q=author%3A"Civano"&db_f=astronomy&aut_f=(-"1%2FCivano%2C+F%2FCivano%2C+Francesca+M."+AND+-"1%2FElvis%2C M%2FElvis%2C Martin")&bibgr_f=("CfA"+AND+"CXC")&grant_f=("0%2FNASA-HQ"+OR+"0%2FNASA-GSFC")'):
            expected = deepcopy(QueryBuilderSearch.DEFAULT_COMPONENTS)
            expected['q'] = u'(author:"Civano") AND grant_facet_hier:("0/NASA-HQ" OR "0/NASA-GSFC") AND author_facet_hier:(-"1/Civano, F/Civano, Francesca M." AND -"1/Elvis, M/Elvis, Martin") AND bibgroup_facet:("CfA" AND "CXC") AND database:"astronomy"'
            expected['ui_q'] = u'author:"Civano"'
            expected['ui_filters'] = [u'grant_facet_hier:("0/NASA-HQ" OR "0/NASA-GSFC")',
                                 u'author_facet_hier:(-"1/Civano, F/Civano, Francesca M." AND -"1/Elvis, M/Elvis, Martin")',
                                 u'bibgroup_facet:("CfA" AND "CXC")',
                                 u'database:"astronomy"',]

            form = QueryForm.init_with_defaults(request.values)
            self.assertEqual(QueryBuilderSearch.build(form, request.values), expected)
Esempio n. 19
0
    def test_query_with_default_params_24(self):
        """test topn operator"""
        self.maxDiff = None
        with self.app.test_request_context('/search/?q=+author%3A"civano"&db_f=astronomy&re_sort_type=DATE&re_sort_dir=desc&topn=1000'):
            expected = deepcopy(QueryBuilderSearch.DEFAULT_COMPONENTS)
            expected['q'] = u'topn(1000, (( author:"civano") AND database:"astronomy"), "pubdate_sort desc")'
            expected['ui_q'] = u' author:"civano"'
            expected['ui_filters'] = [u'database:"astronomy"']
            expected['sort'] = [('pubdate_sort', 'desc'), config.SEARCH_DEFAULT_SECONDARY_SORT]

            form = QueryForm.init_with_defaults(request.values)
            actual = QueryBuilderSearch.build(form, request.values)
            self.assertEqual(actual, expected)
Esempio n. 20
0
    def test_query_with_default_params_20(self):
        """with facet components"""
        with self.app.test_request_context('/search/facets?q=author%3A%22civano%22&aut_f=1%2FCivano%2C+F%2FCivano%2C+F.&db_f=astronomy&facet_field=templ_aut_f&facet_prefix=1/Civano,%20F/'):
            expected = deepcopy(QueryBuilderSearch.DEFAULT_COMPONENTS)
            expected['q'] = u'(author:"civano") AND author_facet_hier:"1/Civano, F/Civano, F." AND database:"astronomy"'
            expected['facets'] = [('author_facet_hier', -1, 1, None, u'1/Civano, F/')]
            expected['facet_field_interf_id'] = u'templ_aut_f'
            expected['ui_q'] = u'author:"civano"'
            expected['ui_filters'] = [u'author_facet_hier:"1/Civano, F/Civano, F."',
                                     u'database:"astronomy"',]

            form = QueryForm.init_with_defaults(request.values)
            actual = QueryBuilderSearch.build(form, request.values, True)
            self.assertEqual(actual, expected)
Esempio n. 21
0
def search():
    """
    returns the results of a search
    """
    if not len(request.values):
        form = QueryForm(csrf_enabled=False)
        # prefill the database select menu option
        form.db_f.default = config.SEARCH_DEFAULT_DATABASE
    else:
        form = QueryForm.init_with_defaults(request.values)
        if form.validate():
            query_components = QueryBuilderSearch.build(form, request.values)
            try:
                resp = solr.query(**query_components)
            except Exception, e:
                raise AdsabsSolrqueryException("Error communicating with search service", sys.exc_info())
            if resp.is_error():
                flash(resp.get_error_message(), 'error')
            return render_template('search_results.html', resp=resp, form=form, query_components=query_components)
        else:
Esempio n. 22
0
def search():
    """
    returns the results of a search
    """
    if not len(request.values):
        form = QueryForm(csrf_enabled=False)
        # prefill the database select menu option
        form.db_f.default = config.SEARCH_DEFAULT_DATABASE
    else:
        form = QueryForm.init_with_defaults(request.values)
        if form.validate():
            query_components = QueryBuilderSearch.build(form, request.values)
            resp = solr.query(**query_components)
            if resp.is_error():
                flash(resp.get_error_message(), 'error')
            return render_template('search_results.html', resp=resp, form=form)
        else:
            for field_name, errors_list in form.errors.iteritems():
                flash('errors in the form validation: %s.' % '; '.join(errors_list), 'error')
    return render_template('search.html', form=form)
Esempio n. 23
0
def search():
    """
    returns the results of a search
    """
    if not len(request.values):
        form = QueryForm(csrf_enabled=False)
        # prefill the database select menu option
        form.db_f.default = config.SEARCH_DEFAULT_DATABASE
    else:
        form = QueryForm.init_with_defaults(request.values)
        if form.validate():
            query_components = QueryBuilderSearch.build(form, request.values)
            bigquery_id = request.values.get('bigquery')
            try:
                
                req = solr.create_request(**query_components)
                url = None
                if bigquery_id:
                    prepare_bigquery_request(req, request.values['bigquery'])
                    url = config.SOLRBIGQUERY_URL
                    
                req = solr.set_defaults(req, query_url=url)
                
                with statsd.timer("search.solr.query_response_time"):
                    resp = solr.get_response(req)
                
                statsd.incr("search.solr.executed")
                if bigquery_id:
                    facets = resp.get_facet_parameters()
                    facets.append(('bigquery', bigquery_id))
                
            except Exception, e:
                statsd.incr("search.solr.failed")
                raise AdsabsSolrqueryException("Error communicating with search service", sys.exc_info())
            if resp.is_error():
                statsd.incr("search.solr.error")
                flash(resp.get_error_message(), 'error')

            return render_template('search_results.html', resp=resp, form=form, 
                                   query_components=query_components, bigquery_id=bigquery_id)
        else: