parent
399e4216d4
commit
8c846690b9
|
|
@ -1,7 +1,6 @@
|
||||||
import unicodedata
|
import unicodedata
|
||||||
|
|
||||||
import jaconv
|
import jaconv
|
||||||
import pykakasi
|
|
||||||
from pykakasi import kakasi
|
from pykakasi import kakasi
|
||||||
|
|
||||||
# ---- 全局初始化(只做一次)----
|
# ---- 全局初始化(只做一次)----
|
||||||
|
|
@ -9,6 +8,7 @@ _kakasi = kakasi()
|
||||||
_kakasi.setMode("J", "H") # Kanji -> Hiragana(依据词典近似读音)
|
_kakasi.setMode("J", "H") # Kanji -> Hiragana(依据词典近似读音)
|
||||||
_kakasi.setMode("K", "H") # Katakana -> Hiragana
|
_kakasi.setMode("K", "H") # Katakana -> Hiragana
|
||||||
_kakasi.setMode("H", "H") # Hiragana -> Hiragana(不变)
|
_kakasi.setMode("H", "H") # Hiragana -> Hiragana(不变)
|
||||||
|
_kakasi.setMode("a", "H") # Romaji -> Hiragana
|
||||||
# 可选:保留原文空格/标点;如需去除空格可自行处理
|
# 可选:保留原文空格/标点;如需去除空格可自行处理
|
||||||
_converter = _kakasi.getConverter()
|
_converter = _kakasi.getConverter()
|
||||||
|
|
||||||
|
|
@ -25,6 +25,7 @@ def all_in_kana(text: str) -> str:
|
||||||
|
|
||||||
# 2) 先做假名统一(片假名 -> 平假名;半角片假名也会被 NFKC 规范化)
|
# 2) 先做假名统一(片假名 -> 平假名;半角片假名也会被 NFKC 规范化)
|
||||||
# 这一步对只有假名的输入能直接得到平假名
|
# 这一步对只有假名的输入能直接得到平假名
|
||||||
|
s = jaconv.alphabet2kata(s)
|
||||||
s = jaconv.kata2hira(s)
|
s = jaconv.kata2hira(s)
|
||||||
|
|
||||||
# 3) 用 pykakasi 将汉字(以及残留的片假名)转换为“平假名读音”
|
# 3) 用 pykakasi 将汉字(以及残留的片假名)转换为“平假名读音”
|
||||||
|
|
@ -36,9 +37,9 @@ def all_in_kana(text: str) -> str:
|
||||||
hira = jaconv.kata2hira(hira)
|
hira = jaconv.kata2hira(hira)
|
||||||
|
|
||||||
# 5) 可选清洗:去掉多余空白(如果你不想保留空格)
|
# 5) 可选清洗:去掉多余空白(如果你不想保留空格)
|
||||||
# hira = "".join(hira.split())
|
hira = "".join(hira.split())
|
||||||
|
|
||||||
return hira
|
return hira
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
print(all_in_kana('能力'))
|
print(all_in_kana('ai'))
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
import asyncio
|
import asyncio
|
||||||
|
from typing import List, Literal, Tuple
|
||||||
|
|
||||||
from tortoise import Tortoise
|
from tortoise import Tortoise
|
||||||
from tortoise.expressions import Q
|
from tortoise.expressions import Q
|
||||||
from typing import List, Literal, Tuple
|
|
||||||
|
|
||||||
from app.models import WordlistFr, WordlistJp
|
from app.models import WordlistFr, WordlistJp
|
||||||
from app.schemas.search_schemas import SearchRequest
|
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)
|
query_word = all_in_kana(query.query)
|
||||||
exact = await (
|
exact = await (
|
||||||
WordlistJp
|
WordlistJp
|
||||||
.get_or_none(text=query.query)
|
.get_or_none(
|
||||||
|
text=query.query
|
||||||
|
)
|
||||||
.only("text", "freq")
|
.only("text", "freq")
|
||||||
)
|
)
|
||||||
if exact:
|
if exact:
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue