# study-word **Repository Path**: daybreak776/study-word ## Basic Information - **Project Name**: study-word - **Description**: 一个AIcodding出来的练手的学单词的网站 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-07-22 - **Last Updated**: 2026-07-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 记单词 (Study Word) 基于题库的英语单词学习网站——选择题库后自动生成选择题,答题后可查看单词详情(释义、词形变化、例句、同义词、词根等)。 ## 技术栈 | 层 | 技术 | |------|------| | 前端 | Vue 3 + TypeScript + Vite + Element Plus + Pinia | | 后端 | Spring Boot 3.3 + JPA + SQLite | | 数据库 | SQLite(`backend/data/studyword_v2.db`) | | 词典数据 | ECDICT(14,942 个带考试标签的单词) | ## 项目结构 ``` study-word/ ├── backend/ # Spring Boot 后端 │ ├── src/main/java/com/studyword/ │ │ ├── entity/ # 11 张表的 JPA 实体 │ │ ├── repository/ # 11 个 Spring Data JPA Repository │ │ ├── service/ # QuizService, WordDetailService 等 │ │ ├── controller/ # REST API 控制器 │ │ ├── dto/ # 请求/响应 DTO │ │ └── config/ # CORS 配置 │ ├── src/main/resources/ │ │ ├── application.yml # 数据库、JPA 配置 │ │ └── data.sql # 种子数据(已停用,数据由 ECDICT 导入) │ └── pom.xml ├── frontend/ # Vue 3 前端 │ ├── src/ │ │ ├── views/ # 页面组件(HomePage, QuizPage, ResultPage) │ │ ├── components/ # 通用组件 │ │ ├── router/ # Vue Router │ │ ├── store/ # Pinia 状态管理 │ │ ├── api/ # Axios API 客户端 │ │ └── types/ # TypeScript 类型定义 │ └── vite.config.ts ├── ECDICT/ # 词典数据源 + 导入脚本 │ ├── ecdict.csv # 原始词典(~770K 条目) │ ├── import_to_studyword.py # 主导入脚本 │ ├── generate_sentences.py # 例句生成脚本 │ ├── extract_collocations.py # 搭配提取脚本 │ ├── llm_collocations.py # LLM 批量生成搭配 │ ├── wordroot.txt # 词根词缀数据 │ └── resemble.txt # 同义词辨析数据 └── docs/ # 文档和计划 ``` ## 数据库表 | 表 | 说明 | 数据量 | |----|------|--------| | `word` | 单词主表 | 14,942 | | `word_sense` | 义项(多义项拆分行) | 14,942 | | `word_form` | 不规则词形变化 | 28,867 | | `word_bank` | 词库(CET-4、TOEFL 等 9 个) | 9 | | `word_bank_word` | 词库-单词 M:N 关联 | 38,855 | | `example_sentence` | 例句 | 14,942 | | `synonym` | 同义词 | 3,531 | | `antonym` | 反义词 | 0(待充实) | | `collocation` | 搭配用法 | 0(待充实) | | `word_root` | 词根词缀 | 611 | | `word_root_relation` | 单词-词根 M:N 关联 | 5,092 | ## 快速启动 **前置要求:** Java 17+, Node.js 18+, Maven ### 1. 启动后端 ```bash cd backend mvn spring-boot:run # 启动在 http://localhost:8080 ``` ### 2. 启动前端 ```bash cd frontend npm install npm run dev # 启动在 http://localhost:5173 ``` 开发时前端通过 Vite proxy 将 `/api` 请求转发到 `localhost:8080`。 ### 3. 导入词典数据 ```bash cd ECDICT python import_to_studyword.py ``` 首次运行会建表并导入 ECDICT 考试标签单词(14,942 个),含词形变化、词根、同义词、例句。 ## API | 方法 | 路径 | 说明 | |------|------|------| | GET | `/api/wordbanks` | 获取所有词库列表 | | GET | `/api/wordbanks/{id}` | 获取单个词库 | | POST | `/api/quiz/generate` | 生成 quiz 题组(body: `{ wordBankId, count }`) | | POST | `/api/quiz/check` | 判断答案(body: `{ sessionId, questionId, selectedOption }`) | | GET | `/api/word/{wordId}/detail` | 获取单词完整详情(释义、词形、例句、同义词等) | ## License MIT