diff --git a/app/utils/all_kana.py b/app/utils/all_kana.py index 9be9e6f..cbc9393 100644 --- a/app/utils/all_kana.py +++ b/app/utils/all_kana.py @@ -1,7 +1,6 @@ import unicodedata import jaconv -import pykakasi from pykakasi import kakasi # ---- 全局初始化(只做一次)---- @@ -9,6 +8,7 @@ _kakasi = kakasi() _kakasi.setMode("J", "H") # Kanji -> Hiragana(依据词典近似读音) _kakasi.setMode("K", "H") # Katakana -> Hiragana _kakasi.setMode("H", "H") # Hiragana -> Hiragana(不变) +_kakasi.setMode("a", "H") # Romaji -> Hiragana # 可选:保留原文空格/标点;如需去除空格可自行处理 _converter = _kakasi.getConverter() @@ -25,6 +25,7 @@ def all_in_kana(text: str) -> str: # 2) 先做假名统一(片假名 -> 平假名;半角片假名也会被 NFKC 规范化) # 这一步对只有假名的输入能直接得到平假名 + s = jaconv.alphabet2kata(s) s = jaconv.kata2hira(s) # 3) 用 pykakasi 将汉字(以及残留的片假名)转换为“平假名读音” @@ -36,9 +37,9 @@ def all_in_kana(text: str) -> str: hira = jaconv.kata2hira(hira) # 5) 可选清洗:去掉多余空白(如果你不想保留空格) - # hira = "".join(hira.split()) + hira = "".join(hira.split()) return hira if __name__ == '__main__': - print(all_in_kana('能力')) \ No newline at end of file + print(all_in_kana('ai')) \ No newline at end of file diff --git a/app/utils/autocomplete.py b/app/utils/autocomplete.py index d0257c4..45ee24e 100644 --- a/app/utils/autocomplete.py +++ b/app/utils/autocomplete.py @@ -1,8 +1,8 @@ import asyncio +from typing import List, Literal, Tuple from tortoise import Tortoise from tortoise.expressions import Q -from typing import List, Literal, Tuple from app.models import WordlistFr, WordlistJp from app.schemas.search_schemas import SearchRequest @@ -57,7 +57,9 @@ async def suggest_autocomplete(query: SearchRequest, limit: int = 10) -> List[st query_word = all_in_kana(query.query) exact = await ( WordlistJp - .get_or_none(text=query.query) + .get_or_none( + text=query.query + ) .only("text", "freq") ) if exact: