搜索次数接口

This commit is contained in:
Miyamizu-MitsuhaSang 2025-11-06 19:21:35 +08:00
parent 2c893df2cf
commit 055cad882b
6 changed files with 40 additions and 1 deletions

View File

@ -11,7 +11,7 @@ async def get_and_set_last_key(redis: Redis, word: str, user_id: str):
print(last_word) print(last_word)
# 如果上一次查的词和这次不同,就清空旧词的记录 # 如果上一次查的词和这次不同,就清空旧词的记录
if last_word and last_word != word: if last_word and last_word.decode() != word:
await clear_chat_history(redis, user_id, last_word.decode()) await clear_chat_history(redis, user_id, last_word.decode())
# 更新当前词 # 更新当前词

View File

@ -67,7 +67,10 @@ async def search(request: Request, body: SearchRequest, user=Depends(get_current
:param user: :param user:
:return: :return:
""" """
redis = request.app.state.redis
query = body.query query = body.query
if body.language == 'fr': if body.language == 'fr':
query = normalize_text(query) query = normalize_text(query)
word_contents = await ( word_contents = await (
@ -100,6 +103,9 @@ async def search(request: Request, body: SearchRequest, user=Depends(get_current
eng_explanation=wc.eng_explanation, eng_explanation=wc.eng_explanation,
) )
) )
await service.search_time_updates(redis)
return WordSearchResponse( return WordSearchResponse(
query=query, query=query,
pos=pos_contents, pos=pos_contents,
@ -130,6 +136,9 @@ async def search(request: Request, body: SearchRequest, user=Depends(get_current
example=wc.example, example=wc.example,
) )
) )
await service.search_time_updates(redis)
return WordSearchResponse( return WordSearchResponse(
query=query, query=query,
pos=pos_contents, pos=pos_contents,

View File

@ -2,6 +2,7 @@ import re
from typing import List, Tuple, Dict, Literal, Type from typing import List, Tuple, Dict, Literal, Type
from fastapi import HTTPException from fastapi import HTTPException
from redis.asyncio import Redis
from tortoise import Tortoise, Model from tortoise import Tortoise, Model
from tortoise.expressions import Q from tortoise.expressions import Q
@ -12,6 +13,12 @@ from app.utils.textnorm import normalize_text
from settings import TORTOISE_ORM from settings import TORTOISE_ORM
async def search_time_updates(redis: Redis) -> None:
key = "search_times"
await redis.incr(key, 1)
async def detect_language(text: str) -> Tuple[str, str, bool]: async def detect_language(text: str) -> Tuple[str, str, bool]:
""" """
自动检测输入语言: 自动检测输入语言:

View File

View File

@ -0,0 +1,20 @@
#TODO 更新接口文档
from fastapi import APIRouter
from starlette.requests import Request
ulit_router = APIRouter()
@ulit_router.get("/search_time", tags=["search times"])
async def get_search_time(request: Request):
redis = request.app.state.redis
key = f"search_time"
count = int(await redis.get(key))
if not count:
await redis.set(key, value=0)
count = 0
return {
"count": count,
}

View File

@ -15,6 +15,7 @@ from app.api.redis_test import redis_test_router
from app.api.search_dict.routes import dict_search from app.api.search_dict.routes import dict_search
from app.api.translator import translator_router from app.api.translator import translator_router
from app.api.user.routes import users_router from app.api.user.routes import users_router
from app.api.util_api.routes import ulit_router
from app.api.word_comment.routes import word_comment_router from app.api.word_comment.routes import word_comment_router
from app.core.redis import init_redis, close_redis from app.core.redis import init_redis, close_redis
from app.utils.phone_encrypt import PhoneEncrypt from app.utils.phone_encrypt import PhoneEncrypt
@ -67,5 +68,7 @@ app.include_router(pron_test_router, tags=["Pron Test API"], prefix="/test/pron"
app.include_router(article_router, tags=["Article API"]) app.include_router(article_router, tags=["Article API"])
app.include_router(ulit_router, tags=["Util Functions API"])
if __name__ == "__main__": if __name__ == "__main__":
uvicorn.run("main:app", host="127.0.0.1", port=8000, reload=True) uvicorn.run("main:app", host="127.0.0.1", port=8000, reload=True)