Skip to content

Commit

Permalink
Merge pull request #53 from khaledk2/return_the_exact_match_first
Browse files Browse the repository at this point in the history
Return the exact match first
  • Loading branch information
jburel authored Sep 8, 2022
2 parents 3ea889e + 00f4a7f commit 07999d0
Showing 1 changed file with 55 additions and 17 deletions.
72 changes: 55 additions & 17 deletions omero_search_engine/api/v1/resources/resource_analyser.py
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@
)


def search_index_for_value(e_index, query):
def search_index_for_value(e_index, query, get_size=False):
"""
Perform search the elastcisearch using value and
return all the key values whihch this value has been used,
Expand All @@ -104,6 +104,8 @@ def search_index_for_value(e_index, query):
to the elasticsearcg hosting machine
"""
es = search_omero_app.config.get("es_connector")
if get_size:
return es.count(index=e_index, body=query)
res = es.search(index=e_index, body=query)
return res

Expand All @@ -125,7 +127,17 @@ def search_index_for_values_get_all_buckets(e_index, query):
# res = es.count(index=e_index, body=query)
size = res["count"]
query["size"] = page_size
query["sort"] = [{"id": "asc"}]
query["sort"] = [
{
"_script": {
"script": "doc['Value.keyvaluenormalize'].value.length()",
"type": "number",
"order": "asc",
}
},
{"items_in_the_bucket": "desc"},
{"id": "asc"},
]
co = 0
while co < size:
if co != 0:
Expand All @@ -143,7 +155,11 @@ def search_index_for_values_get_all_buckets(e_index, query):
% (co, size)
)
return returened_results
bookmark = [res["hits"]["hits"][-1]["sort"][0]]
bookmark = [
int(res["hits"]["hits"][-1]["sort"][0]),
int(res["hits"]["hits"][-1]["sort"][1]),
res["hits"]["hits"][-1]["sort"][2],
]
return returened_results


Expand Down Expand Up @@ -290,7 +306,7 @@ def get_values_for_a_key(table_, key):
}


def prepare_search_results(results):
def prepare_search_results(results, size=0):
returned_results = []
total_number = 0
number_of_buckets = 0
Expand All @@ -314,18 +330,28 @@ def prepare_search_results(results):
row["Number of %ss" % resource] = res.get("items_in_the_bucket")
total_number += res["items_in_the_bucket"]
number_of_buckets += 1
return {

results_dict = {
"data": returned_results,
"total_number_of_%s" % (resource): total_number,
"total_number_of_buckets": number_of_buckets,
}

if size > 0:
results_dict["total_number_of_all_buckets "] = size
if number_of_buckets < size:
# this should be later to get the next page
results_dict["bookmark"] = [
int(results["hits"]["hits"][-1]["sort"][0]),
int(results["hits"]["hits"][-1]["sort"][1]),
results["hits"]["hits"][-1]["sort"][2],
]
return results_dict


def prepare_search_results_buckets(results_):
returned_results = []
total = 0
total_number = 0
total_items = 0
number_of_buckets = 0
resource = None
for results in results_:
Expand All @@ -337,15 +363,12 @@ def prepare_search_results_buckets(results_):
row["Value"] = res["Value"]
resource = res.get("resource")
row["Number of %ss" % resource] = res.get("items_in_the_bucket")
total_number = res["total_items_in_saved_buckets"]
number_of_buckets = res["total_buckets"]
total_items = res["total_items"]
total_number += res["items_in_the_bucket"]
number_of_buckets += 1
return {
"data": returned_results,
"total_number": total_number,
"total_number_of_%s" % (resource): total,
"total_number_of_%s" % (resource): total_number,
"total_number_of_buckets": number_of_buckets,
"total_items": total_items,
}


Expand Down Expand Up @@ -463,9 +486,14 @@ def search_value_for_resource(table_, value, es_index="key_value_buckets_informa
query = resource_key_values_buckets_template.substitute(
value=value, resource=table_
)
size_query = resource_key_values_buckets_size_template.substitute(
value=value, resource=table_
)
# Get the total number of the results.
res = search_index_for_value(es_index, size_query, True)
size = res["count"]
res = search_index_for_value(es_index, query)

return prepare_search_results(res)
return prepare_search_results(res, size)
else:
# If the user does not specify anything,
# it will add * at the start and at the end to
Expand Down Expand Up @@ -544,17 +572,27 @@ def search_value_for_resource(table_, value, es_index="key_value_buckets_informa
{"Value.keyvaluenormalize":"*$value*"}}}}]}},"size": 9999}"""
)

resource_key_values_buckets_size_template = Template(
"""
{"query":{"bool":{"must":[{"bool":{
"must":{"wildcard":{"Value.keyvaluenormalize":"*$value*"}}}},{
"bool": {"must": {"match":
{"resource.keyresource": "$resource"}}}}]}}}"""
)

resource_key_values_buckets_template = Template(
"""
{"query":{"bool":{"must":[{"bool":{
"must":{"wildcard":{"Value.keyvaluenormalize":"*$value*"}}}},{
"bool": {"must": {"match":
{"resource.keyresource": "$resource"}}}}]}},
"size": 9999, "sort": [{"items_in_the_bucket": "desc"}]}"""
"size": 9999, "sort":[{ "_script": {
"script": "doc['Value.keyvaluenormalize'].value.length()",
"type": "number",
"order": "asc"
}},{"items_in_the_bucket": "desc"}, {"id": "asc"}]}"""
)


key_values_buckets_template_2 = Template(
"""
{"query":{"bool":{"must":[{"bool":{"must":{"match":{
Expand Down

0 comments on commit 07999d0

Please sign in to comment.