コード例 #1
0
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)
コード例 #2
0
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)
コード例 #3
0
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
コード例 #4
0
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]
コード例 #5
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)
コード例 #6
0
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)