From d58e02183dcc7b52a85b378ae40bd59cddbcfaff Mon Sep 17 00:00:00 2001 From: HuangHai <10402852@qq.com> Date: Tue, 19 Aug 2025 09:04:35 +0800 Subject: [PATCH] 'commit' --- .../ElasticSearch/Utils/EsSearchUtil.py | 54 +++++++++++++++++++ dsSchoolBuddy/ElasticSearch/Utils/__init__.py | 0 dsSchoolBuddy/Start.py | 2 +- 3 files changed, 55 insertions(+), 1 deletion(-) create mode 100644 dsSchoolBuddy/ElasticSearch/Utils/EsSearchUtil.py create mode 100644 dsSchoolBuddy/ElasticSearch/Utils/__init__.py diff --git a/dsSchoolBuddy/ElasticSearch/Utils/EsSearchUtil.py b/dsSchoolBuddy/ElasticSearch/Utils/EsSearchUtil.py new file mode 100644 index 00000000..dd326258 --- /dev/null +++ b/dsSchoolBuddy/ElasticSearch/Utils/EsSearchUtil.py @@ -0,0 +1,54 @@ +import logging + +from ElasticSearch.Utils.ElasticsearchConnectionPool import ElasticsearchConnectionPool + +# 初始化日志 +logger = logging.getLogger(__name__) +logger.setLevel(logging.INFO) + +class EsSearchUtil: + def __init__(self, es_config): + """ + 初始化Elasticsearch搜索工具 + :param es_config: Elasticsearch配置字典,包含hosts, username, password, index_name等 + """ + self.es_config = es_config + + # 初始化连接池 + self.es_pool = ElasticsearchConnectionPool( + hosts=es_config['hosts'], + basic_auth=es_config['basic_auth'], + verify_certs=es_config.get('verify_certs', False), + max_connections=50 + ) + + self.index_name = es_config['index_name'] + logger.info(f"EsSearchUtil初始化成功,索引名称: {self.index_name}") + + def text_search(self, query, size=10): + # 从连接池获取连接 + conn = self.es_pool.get_connection() + try: + # 使用连接执行搜索 + result = conn.search( + index=self.es_config['index_name'], + query={"match": {"user_input": query}}, + size=size + ) + return result + except Exception as e: + logger.error(f"文本搜索失败: {str(e)}") + raise + finally: + # 释放连接回连接池 + self.es_pool.release_connection(conn) + + def hybrid_search(self, query, size=10): + # 注意:混合搜索方法需要更新以使用火山引擎API计算向量 + # 此处保留方法框架,具体实现需要根据火山引擎API进行调整 + pass + +# 以下功能已删除,建议通过火山引擎API实现向量计算: +# 1. 本地模型加载和相关配置 (KeyedVectors) +# 2. text_to_embedding方法 (基于本地模型的向量计算) +# 3. vector_search方法 (使用本地模型向量的搜索) \ No newline at end of file diff --git a/dsSchoolBuddy/ElasticSearch/Utils/__init__.py b/dsSchoolBuddy/ElasticSearch/Utils/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/dsSchoolBuddy/Start.py b/dsSchoolBuddy/Start.py index 239a94c3..516d000d 100644 --- a/dsSchoolBuddy/Start.py +++ b/dsSchoolBuddy/Start.py @@ -15,7 +15,7 @@ from starlette.responses import StreamingResponse from starlette.staticfiles import StaticFiles from Config import Config -from Util.EsSearchUtil import * +from ElasticSearch.Utils.EsSearchUtil import * from Util.MySQLUtil import init_mysql_pool # 初始化日志