def test_author_bai_malformed(): query = IQ('a r.j.hill.1', LiteratureSearch()) expected = {} result = query.to_dict() assert expected == result
def test_google_style_and_not_collaboration(): query = IQ("raffaele d'agnolo and not cn cms", LiteratureSearch()) expected = {} result = query.to_dict() assert expected == result
def test_author(): query = IQ('a kondrashuk', LiteratureSearch()) expected = {} result = query.to_dict() assert expected == result
def test_type_code_colon(): query = IQ('tc: l', LiteratureSearch()) expected = {'multi_match': {'query': 'l', 'fields': ['collection']}} result = query.to_dict() assert expected == result
def test_find_exactauthor_not_affiliation_uppercase(): query = IQ('FIND EA RINALDI, MASSIMILIANO NOT AFF SINCROTRONE TRIESTE', LiteratureSearch()) expected = { "bool": { "must_not": [{ "multi_match": { "query": "SINCROTRONE TRIESTE", "fields": ["authors.affiliations.value", "corporate_author"] } }], "must": [{ "multi_match": { "query": "RINALDI, MASSIMILIANO", "fields": [ "exactauthor.raw", "authors.full_name", "authors.alternative_names", "authors.ids.value" ] } }] } } result = query.to_dict() assert expected == result
def test_field_code_colon(): query = IQ('fc: a', LiteratureSearch()) expected = {'multi_match': {'query': 'a', 'fields': ['field_code']}} result = query.to_dict() assert expected == result
def test_journal_colon(): query = IQ('journal:TODO', LiteratureSearch()) expected = {} result = query.to_dict() assert expected == result
def test_author_or_author(): query = IQ('a fileviez perez,p or p. f. perez', LiteratureSearch()) expected = {} result = query.to_dict() assert expected == result
def test_author_and_not_type_code(): query = IQ('a nilles,h and not tc I', LiteratureSearch()) expected = {} result = query.to_dict() assert expected == result
def test_author_bai(): query = IQ('find a r.j.hill.1', LiteratureSearch()) expected = { "bool": { "must": [{ "bool": { "should": [{ "match": { "authors.name_variations": "r.j.hill.1" } }, { "term": { "authors.ids.value": "r.j.hill.1" } }] } }], "should": [{ "match": { "authors.full_name": "r.j.hill.1" } }] } } result = query.to_dict() assert expected == result
def test_find_type_code(): query = IQ('find tc book', LiteratureSearch()) expected = {'multi_match': {'query': 'book', 'fields': ['collection']}} result = query.to_dict() assert expected == result
def test_find_report(): query = IQ('find r atlas-conf-*', LiteratureSearch()) expected = {} result = query.to_dict() assert expected == result
def test_find_date(): query = IQ('fin date > today', LiteratureSearch()) expected = {} result = query.to_dict() assert expected == result
def test_find_country_code(): query = IQ('find cc italy', LiteratureSearch()) expected = {} result = query.to_dict() assert expected == result
def test_exactauthor_colon(): query = IQ('ea:matt visser', LiteratureSearch()) expected = {} result = query.to_dict() assert expected == result
def test_exactauthor(): query = IQ('ea wu, xing gang') expected = {} result = query.to_dict() assert expected == result
def test_exactauthor_colon_and_collection_colon(): query = IQ('ea: matt visser AND collection:citeable', LiteratureSearch()) expected = {} result = query.to_dict() assert expected == result
def test_author_colon_with_double_quotes(): query = IQ('author:"tachikawa, yuji"', LiteratureSearch()) expected = { "bool": { "must": [{ "bool": { "should": [{ "match": { "authors.name_variations": "tachikawa, yuji" } }, { "term": { "authors.ids.value": "tachikawa, yuji" } }] } }], "should": [{ "match": { "authors.full_name": "tachikawa, yuji" } }] } } result = query.to_dict() assert expected == result
def test_fulltext_colon(): query = IQ('fulltext:TODO', LiteratureSearch()) expected = {} result = query.to_dict() assert expected == result
def test_author_colon_bai(): query = IQ('author:Y.Nomura.1', LiteratureSearch()) expected = { 'bool': { 'must': [{ 'bool': { 'should': [{ 'match': { u'authors.name_variations': 'Y.Nomura.1' } }, { 'term': { u'authors.ids.value': 'Y.Nomura.1' } }] } }], 'should': [{ 'match': { u'authors.full_name': 'Y.Nomura.1' } }] } } result = query.to_dict() assert expected == result
def test_topcite_colon(): query = IQ('topcite:200+', LiteratureSearch()) expected = {} result = query.to_dict() assert expected == result
def test_author_colon_bai_with_double_quotes_and_collection_colon(): query = IQ('author:"E.Witten.1" AND collection:citeable', LiteratureSearch()) expected = { 'bool': { 'must': [{ 'bool': { 'should': [{ 'match': { u'authors.name_variations': 'E.Witten.1' } }, { 'term': { u'authors.ids.value': 'E.Witten.1' } }] } }, { 'multi_match': { 'fields': ['collections.primary'], 'query': 'citeable' } }], 'should': [{ 'match': { u'authors.full_name': 'E.Witten.1' } }] } } result = query.to_dict() assert expected == result
def test_google_style_or_google_style(): query = IQ('sungtae cho or 1301.7261', LiteratureSearch()) expected = {} result = query.to_dict() assert expected == result
def test_citedby_colon(): query = IQ('citedby:foobar', LiteratureSearch()) expected = {} result = query.to_dict() assert expected == result
def test_find_author(): query = IQ('find a polchinski', LiteratureSearch()) expected = { "bool": { "must": [{ "bool": { "should": [{ "match": { "authors.name_variations": "polchinski" } }, { "term": { "authors.ids.value": "polchinski" } }] } }], "should": [{ "match": { "authors.full_name": "polchinski" } }] } } result = query.to_dict() assert expected == result
def test_citedby_colon_recid_colon(): query = IQ('citedby:recid:902780', LiteratureSearch()) expected = {} result = query.to_dict() assert expected == result
def test_find_author_uppercase(): query = IQ('FIND A W F CHANG', LiteratureSearch()) expected = { "bool": { "must": [{ "bool": { "should": [{ "match": { "authors.name_variations": "W F CHANG" } }, { "term": { "authors.ids.value": "W F CHANG" } }] } }], "should": [{ "match": { "authors.full_name": "W F CHANG" } }] } } result = query.to_dict() assert expected == result
def test_eprint_colon_without_arxiv(): query = IQ('eprint:TODO', LiteratureSearch()) expected = {} result = query.to_dict() assert expected == result
def inspire_search_factory(self, search): """Parse query using Invenio-Query-Parser. :param self: REST view. :param search: Elastic search DSL search instance. :returns: Tuple with search instance and URL arguments. """ from invenio_records_rest.facets import default_facets_factory from invenio_records_rest.sorter import default_sorter_factory query_string = request.values.get('q', '') try: search = search.query(IQ(query_string, search)) except SyntaxError: current_app.logger.debug("Failed parsing query: {0}".format( request.values.get('q', '')), exc_info=True) raise InvalidQueryRESTError() finally: if current_app.debug: current_app.logger.debug(json.dumps(search.to_dict(), indent=4)) search_index = search._index[0] search, urlkwargs = default_facets_factory(search, search_index) search, sortkwargs = default_sorter_factory(search, search_index) for key, value in sortkwargs.items(): urlkwargs.add(key, value) urlkwargs.add('q', query_string) return search, urlkwargs
def test_author_colon_bai_with_double_quotes_and_collection_colon(): query = IQ('author:"E.Witten.1" AND collection:citeable', LiteratureSearch()) expected = { "bool": { "should": [{ "match": { "authors.full_name": "E.Witten.1" } }], "must": [{ "bool": { "should": [{ "match": { "authors.name_variations": "E.Witten.1" } }, { "term": { "authors.inspire_bai": "E.Witten.1" } }] } }, { "multi_match": { "query": "citeable", "fields": ["collections.primary"] } }] } } result = query.to_dict() assert expected == result