Skip to content

Commit

Permalink
Added simple_search_query for concepts
Browse files Browse the repository at this point in the history
  • Loading branch information
vladimir2217 committed Apr 4, 2024
1 parent 18c7060 commit 107cc91
Showing 1 changed file with 111 additions and 95 deletions.
206 changes: 111 additions & 95 deletions src/dug/core/async_search.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
"""Implements search methods using async interfaces"""

import logging
from elasticsearch import AsyncElasticsearch
from elasticsearch.helpers import async_scan
Expand Down Expand Up @@ -221,9 +220,11 @@ async def search_concepts(self, query, offset=0, size=None, types=None,
"""
Changed to a long boolean match query to optimize search results
"""
query_dict = self._build_concepts_query(query, **kwargs)
if "*" in query or "\"" in query or "+" in query or "-" in query:
search_body = self.get_simple_search_query(query)
else:
search_body = {"query": self._build_concepts_query(query, **kwargs)}
# Get aggregated counts of biolink types
search_body = {"query": query_dict}
search_body['aggs'] = {'type-count': {'terms': {'field': 'type'}}}
if isinstance(types, list):
search_body['post_filter'] = {
Expand Down Expand Up @@ -418,110 +419,112 @@ async def search_kg(self, unique_id, query, offset=0, size=None,

def get_query(self, concept, fuzziness, prefix_length, query):
query = {
'bool': {
'should': {
"match": {
"identifiers": concept
}
},
'should': [
{
"match_phrase": {
"element_name": {
"query": query,
"boost": 10
}
"query": {
'bool': {
'should': {
"match": {
"identifiers": concept
}
},
{
"match_phrase": {
"element_desc": {
"query": query,
"boost": 6
'should': [
{
"match_phrase": {
"element_name": {
"query": query,
"boost": 10
}
}
}
},
{
"match_phrase": {
"search_terms": {
"query": query,
"boost": 8
},
{
"match_phrase": {
"element_desc": {
"query": query,
"boost": 6
}
}
}
},
{
"match": {
"element_name": {
"query": query,
"fuzziness": fuzziness,
"prefix_length": prefix_length,
"operator": "and",
"boost": 4
},
{
"match_phrase": {
"search_terms": {
"query": query,
"boost": 8
}
}
}
},
{
"match": {
"search_terms": {
"query": query,
"fuzziness": fuzziness,
"prefix_length": prefix_length,
"operator": "and",
"boost": 5
},
{
"match": {
"element_name": {
"query": query,
"fuzziness": fuzziness,
"prefix_length": prefix_length,
"operator": "and",
"boost": 4
}
}
}
},
{
"match": {
"element_desc": {
"query": query,
"fuzziness": fuzziness,
"prefix_length": prefix_length,
"operator": "and",
"boost": 3
},
{
"match": {
"search_terms": {
"query": query,
"fuzziness": fuzziness,
"prefix_length": prefix_length,
"operator": "and",
"boost": 5
}
}
}
},
{
"match": {
"element_desc": {
"query": query,
"fuzziness": fuzziness,
"prefix_length": prefix_length,
"boost": 2
},
{
"match": {
"element_desc": {
"query": query,
"fuzziness": fuzziness,
"prefix_length": prefix_length,
"operator": "and",
"boost": 3
}
}
}
},
{
"match": {
"element_name": {
"query": query,
"fuzziness": fuzziness,
"prefix_length": prefix_length,
"boost": 2
},
{
"match": {
"element_desc": {
"query": query,
"fuzziness": fuzziness,
"prefix_length": prefix_length,
"boost": 2
}
}
}
},
{
"match": {
"search_terms": {
"query": query,
"fuzziness": fuzziness,
"prefix_length": prefix_length,
"boost": 1
},
{
"match": {
"element_name": {
"query": query,
"fuzziness": fuzziness,
"prefix_length": prefix_length,
"boost": 2
}
}
}
},
{
"match": {
"optional_terms": {
"query": query,
"fuzziness": fuzziness,
"prefix_length": prefix_length
},
{
"match": {
"search_terms": {
"query": query,
"fuzziness": fuzziness,
"prefix_length": prefix_length,
"boost": 1
}
}
},
{
"match": {
"optional_terms": {
"query": query,
"fuzziness": fuzziness,
"prefix_length": prefix_length
}
}
}
}
]
]
}
}
}
if concept:
Expand All @@ -531,3 +534,16 @@ def get_query(self, concept, fuzziness, prefix_length, query):
}
}
return query

def get_simple_search_query(self, query):
search_query = {
"query": {
"simple_query_string": {
"query": query,
"fields": ["name", "description", "search_terms"],
"default_operator": "and",
"flags": "OR|AND|NOT|PHRASE|PREFIX"
}
}
}
return search_query

0 comments on commit 107cc91

Please sign in to comment.