修复搜索接口

This commit is contained in:
Miyamizu-MitsuhaSang 2025-09-04 15:46:33 +08:00
parent 19b0ca3db5
commit eb69cabf47
2 changed files with 15 additions and 6 deletions

View File

@ -50,10 +50,11 @@ async def search(request: Request, body: SearchRequest, user=Depends(get_current
contents=contents, contents=contents,
) )
else: else:
query = all_in_kana(query) query_kana = all_in_kana(query)
print(query) print(query)
word_content = await DefinitionJp.filter( word_content = await DefinitionJp.filter(
word__text=query word__text=query,
word__hiragana=query_kana,
).prefetch_related("word", "pos") ).prefetch_related("word", "pos")
if not word_content: if not word_content:
raise HTTPException(status_code=404, detail="Word not found") raise HTTPException(status_code=404, detail="Word not found")
@ -80,7 +81,7 @@ async def search(request: Request, body: SearchRequest, user=Depends(get_current
# TODO 相关度排序(转换为模糊匹配) # TODO 相关度排序(转换为模糊匹配)
# TODO 输入搜索框时反馈内容 # TODO 输入搜索框时反馈内容
@dict_search.post("search/list") @dict_search.post("/search/list")
async def search_list(query_word: SearchRequest, user=Depends(get_current_user)): async def search_list(query_word: SearchRequest, user=Depends(get_current_user)):
""" """
检索时的提示接口 检索时的提示接口
@ -88,5 +89,6 @@ async def search_list(query_word: SearchRequest, user=Depends(get_current_user))
:param user: :param user:
:return: 待选列表 :return: 待选列表
""" """
print(query_word.query, query_word.language, query_word.sort, query_word.order)
word_contents = await suggest_autocomplete(query=query_word) word_contents = await suggest_autocomplete(query=query_word)
return word_contents return {"list": word_contents}

View File

@ -25,7 +25,11 @@ async def suggest_autocomplete(query: SearchRequest, limit: int = 10) -> List[st
.get_or_none(text=query.query) .get_or_none(text=query.query)
.values("text", "freq") .values("text", "freq")
) )
exact_word = [(exact.get("text"), exact.get("freq"))] if exact:
exact_word = [(exact.get("text"), exact.get("freq"))]
else:
exact_word = []
qs_prefix = ( qs_prefix = (
WordlistFr WordlistFr
.filter(Q(search_text__startswith=query_word) | Q(text__startswith=query.query)) .filter(Q(search_text__startswith=query_word) | Q(text__startswith=query.query))
@ -56,7 +60,10 @@ async def suggest_autocomplete(query: SearchRequest, limit: int = 10) -> List[st
.get_or_none(text=query.query) .get_or_none(text=query.query)
.only("text", "freq") .only("text", "freq")
) )
exact_word = [(exact.text, exact.freq)] if exact:
exact_word = [(exact.text, exact.freq)]
else:
exact_word = []
qs_prefix = ( qs_prefix = (
WordlistJp WordlistJp