用途:为楚克语语言数据提供专门的数据库操作能力,管理词典条目、词语索引、短语、段落与 OCR 页面记录,并保存翻译对和语言元数据。
主要能力:所有持久化统一使用 Azure Cosmos DB 的 MongoDB API,通过 pymongo==4.3.3 访问(该版本固定以兼容 Cosmos DB 的 v6 线路协议),不使用 SQLAlchemy、SQLite 或关系型层。核心为 DictionaryDB 类,封装全部 CRUD。
集合划分:dictionary_collection 存放楚克语词条及释义;words_collection 存放单词检索记录;phrases_collection 存放多词表达;pages_collection 存放 OCR 页面扫描记录;paragraphs_collection 存放段落级文本块。
必要用法:连接辅助位于 src/database/db_factory.py,提供模块级函数 get_database_client() 返回 MongoClient、get_database_config() 返回含容器名与库名的字典。支持两种认证方式:环境变量 COSMOS_DB_CONNECTION_STRING(主要),以及通过 azure-identity 使用 Azure 托管标识(生产回退)。app.py 在模块级实例化 dict_db = DictionaryDB()。
查询示例:使用 re.escape(user_input) 构造模式,再以 {'chuukese_word': {'$regex': pattern, '$options': 'i'}} 执行 find(limit=50),进行忽略大小写的重音折叠正则检索。插入可调用 insert_one,批量写入可调用 bulk_insert_entries(entries_list)。
环境变量:COSMOS_DB_CONNECTION_STRING、COSMOS_DB_NAME、COSMOS_CONTAINER_NAME。
限制与注意:Cosmos DB 必须设置 retryWrites=False;pymongo 需精确使用 4.3.3,更高版本会破坏 Cosmos DB 线路协议;需控制 RU 预算,列表查询应做缓存,避免全集合扫描。完整实现约 2100 行,位于 src/database/dictionary_db.py。其他细节资料暂未提供。