def find_by_url(url, tax, type): query = Q("term", taxonomy__keyword=tax) & Q("term", url__keyword=url) results = current_flask_taxonomies_es.search(query) if len(results) > 0: return results url_parser = urlparse(url) path = url_parser.path path_array = path.split("/") path_array = [node for node in path_array if len(node) > 0] slug = path_array[-1] query = Q("term", taxonomy__keyword=tax) & Q("term", slug__keyword=slug) results = current_flask_taxonomies_es.search(query) if len(results) > 0: return results return db_search(slug, type, search_json_by_slug)
def find_by_title(keyword, tax, type): query = Q("term", taxonomy__keyword=tax) & Q("term", title__value__keyword=keyword) results = current_flask_taxonomies_es.search(query) if len(results) > 0: return results return db_search(keyword, type, search_taxonomy_by_title)
def test_search(app, db, root_taxonomy, child_term, child_term_dict): current_flask_taxonomies_es.reindex() time.sleep(1) query = Q("term", taxonomy__keyword="root") & Q("term", title__value__keyword='Dítě') result = current_flask_taxonomies_es.search(query) del result[0]["date_of_serialization"] assert len(result) == 1 assert result[0] == child_term_dict
def find_uni_by_name(name, parent_name=None, parent_slug=None, query_type="term"): if query_type == "match": query = Q("term", taxonomy__keyword=TAXONOMY_CODE) & Q( query_type, title__value=name) else: query = Q("term", taxonomy__keyword=TAXONOMY_CODE) & Q( query_type, title__value__keyword=name) if parent_slug or parent_name: if parent_slug: parent_query = Q("term", ancestors__slug__keyword=parent_slug) else: parent_query = Q("term", ancestors__title__value__keyword=parent_slug) query = Q('bool', must=[parent_query, query]) if query_type == "match": results = current_flask_taxonomies_es.search(query, match=True) else: results = current_flask_taxonomies_es.search(query) if not results: if query_type == "match": query1 = Q(query_type, formerNames=name) query2 = Q(query_type, aliases=name) else: query1 = Q(query_type, formerNames__keyword=name) query2 = Q(query_type, aliases__keyword=name) q = Q('bool', should=[query1, query2]) if query_type == "match": results = current_flask_taxonomies_es.search(q, match=True) else: results = current_flask_taxonomies_es.search(q) if not results: tax = Taxonomy.get(TAXONOMY_CODE) results = db_search(name, tax, json_address=("title", 0, "value")) if results: return results[0]
def es_search_title(study, tax): query = Q("term", taxonomy__keyword=tax) & Q("term", title__value__keyword=study) return current_flask_taxonomies_es.search(query)
def find_by_id(id_, tax, type): query = Q("term", taxonomy__keyword=tax) & Q("term", slug__keyword=id_) results = current_flask_taxonomies_es.search(query) if len(results) > 0: return results return db_search(id_, type, search_json_by_slug)