all_kana.py|autocomplete.py:

更新查询list匹配逻辑
This commit is contained in:
Miyamizu-MitsuhaSang 2025-09-22 19:27:11 +08:00
parent 399e4216d4
commit 8c846690b9
2 changed files with 8 additions and 5 deletions

View File

@ -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('能力'))
print(all_in_kana('ai'))

View File

@ -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: