bugfixing
This commit is contained in:
parent
c4d938e9aa
commit
ff008f7b61
18
app/main.py
18
app/main.py
@ -57,32 +57,33 @@ PRIORITY_STRATEGIES = {
|
|||||||
'name_contains': 5
|
'name_contains': 5
|
||||||
}
|
}
|
||||||
|
|
||||||
def calculate_score(item: Dict) -> int:
|
def calculate_score(item: Dict, search_query: str) -> int:
|
||||||
name_lower = item['name'].lower()
|
name_lower = item['name'].lower()
|
||||||
symbol_lower = item['symbol'].lower()
|
symbol_lower = item['symbol'].lower()
|
||||||
|
query_lower = search_query.lower()
|
||||||
|
|
||||||
# Exact symbol match
|
# Exact symbol match
|
||||||
if symbol_lower == query.lower():
|
if symbol_lower == query_lower:
|
||||||
return PRIORITY_STRATEGIES['exact_symbol_match']
|
return PRIORITY_STRATEGIES['exact_symbol_match']
|
||||||
|
|
||||||
# Symbol prefix match
|
# Symbol prefix match
|
||||||
if symbol_lower.startswith(query.lower()):
|
if symbol_lower.startswith(query_lower):
|
||||||
return PRIORITY_STRATEGIES['symbol_prefix_match']
|
return PRIORITY_STRATEGIES['symbol_prefix_match']
|
||||||
|
|
||||||
# Exact name match
|
# Exact name match
|
||||||
if name_lower == query.lower():
|
if name_lower == query_lower:
|
||||||
return PRIORITY_STRATEGIES['exact_name_match']
|
return PRIORITY_STRATEGIES['exact_name_match']
|
||||||
|
|
||||||
# Name prefix match
|
# Name prefix match
|
||||||
if name_lower.startswith(query.lower()):
|
if name_lower.startswith(query_lower):
|
||||||
return PRIORITY_STRATEGIES['name_prefix_match']
|
return PRIORITY_STRATEGIES['name_prefix_match']
|
||||||
|
|
||||||
# Symbol contains query
|
# Symbol contains query
|
||||||
if query.lower() in symbol_lower:
|
if query_lower in symbol_lower:
|
||||||
return PRIORITY_STRATEGIES['symbol_contains']
|
return PRIORITY_STRATEGIES['symbol_contains']
|
||||||
|
|
||||||
# Name contains query
|
# Name contains query
|
||||||
if query.lower() in name_lower:
|
if query_lower in name_lower:
|
||||||
return PRIORITY_STRATEGIES['name_contains']
|
return PRIORITY_STRATEGIES['name_contains']
|
||||||
|
|
||||||
# Fallback
|
# Fallback
|
||||||
@ -1698,9 +1699,8 @@ async def get_stock(
|
|||||||
item for item in searchbar_data
|
item for item in searchbar_data
|
||||||
if search_pattern.search(item['name']) or search_pattern.search(item['symbol'])
|
if search_pattern.search(item['name']) or search_pattern.search(item['symbol'])
|
||||||
),
|
),
|
||||||
key=calculate_score
|
key=lambda item: calculate_score(item, query)
|
||||||
)[:5]
|
)[:5]
|
||||||
print(results)
|
|
||||||
return JSONResponse(content=orjson.loads(orjson.dumps(results)))
|
return JSONResponse(content=orjson.loads(orjson.dumps(results)))
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user