基础环境与依赖构建
在开始部署宜春数字档案馆系统之前,必须确保服务器环境满足以下硬性指标。本指南基于CentOS 7.x/8.x环境编写,其他Linux发行版命令略有不同。
1. 安装JDK 17环境
系统后端采用Spring Boot 3.x构建,强制要求JDK 17及以上版本。执行以下命令进行安装与环境变量配置:
```bash
安装OpenJDK 17
yum install -y java-17-openjdk java-17-openjdk-devel
验证安装版本
java -version
配置JAVA_HOME环境变量
echo 'export JAVA_HOME=/usr/lib/jvm/java-17-openjdk' >> /etc/profile
echo 'export PATH=$JAVA_HOME/bin:$PATH' >> /etc/profile
source /etc/profile
```
2. 安装Maven构建工具
用于后端源码的编译打包,建议安装3.8.x及以上版本:
```bash
wget https://archive.apache.org/dist/maven/maven-3/3.8.6/binaries/apache-maven-3.8.6-bin.tar.gz
tar -zxvf apache-maven-3.8.6-bin.tar.gz -C /usr/local/
mv /usr/local/apache-maven-3.8.6 /usr/local/maven
配置Maven环境变量
echo 'export MAVEN_HOME=/usr/local/maven' >> /etc/profile
echo 'export PATH=$MAVEN_HOME/bin:$PATH' >> /etc/profile
source /etc/profile
验证Maven版本
mvn -v
```
3. 安装Node.js前端环境
前端管理界面采用Vue 3 + Vite构建,需安装Node.js 16.x环境:
```bash
curl -fsSL https://rpm.nodesource.com/setup_16.x | bash -
yum install -y nodejs
配置npm国内镜像源以加速依赖下载
npm config set registry https://registry.npmmirror.com
```
MySQL数据库结构设计与初始化
宜春数字档案馆系统的核心数据存储在MySQL中。请确保已安装MySQL 8.0,并执行以下步骤初始化数据库表结构。
1. 创建数据库与用户
登录MySQL客户端,执行以下SQL语句:
```sql
CREATE DATABASE IF NOT EXISTS yichun_archive CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'archive_admin'@'%' IDENTIFIED BY 'Arch@2024Secure';
GRANT ALL PRIVILEGES ON yichun_archive. TO 'archive_admin'@'%';
FLUSH PRIVILEGES;
```
2. 初始化核心表结构
切换至yichun_archive数据库,并创建档案核心表t_archives。该表包含档案元数据及文件路径索引:
```sql
USE yichun_archive;
CREATE TABLE t_archives (
id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID',
archive_code VARCHAR(64) NOT NULL UNIQUE COMMENT '档案编号',
title VARCHAR(255) NOT NULL COMMENT '档案题名',
category_id INT NOT NULL COMMENT '档案分类ID',
file_path VARCHAR(512) NOT NULL COMMENT '电子文件存储路径',
file_size BIGINT DEFAULT 0 COMMENT '文件大小(字节)',
file_hash VARCHAR(64) COMMENT '文件SHA256哈希值',
ocr_content TEXT COMMENT 'OCR识别后的全文内容',
status TINYINT DEFAULT 0 COMMENT '状态:0-草稿,1-已归档,2-已借出',
created_by VARCHAR(64) COMMENT '创建人',
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
updated_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
INDEX idx_category (category_id),
INDEX idx_status (status),
FULLTEXT KEY ft_content (title, ocr_content) WITH PARSER ngram
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='档案实体表';
```
Spring Boot后端核心配置
在获取源码后,需修改src/main/resources/application.yml配置文件,确保连接到正确的数据库与中间件。以下是完整的配置模板:
```yaml
server:
port: 8080
servlet:
context-path: /api
spring:
application:
name: yichun-archive-system
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/yichun_archive?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
username: archive_admin_user
password: Arch@2024Secure
hikari:
minimum-idle: 5
maximum-pool-size: 20
data:
elasticsearch:
repositories:
enabled: true
servlet:
multipart:
max-file-size: 500MB
max-request-size: 500MB
mybatis-plus:
mapper-locations: classpath:mapper/.xml
type-aliases-package: com.yichun.archive.entity
configuration:
map-underscore-to-camel-case: true
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
file:
upload:
path: /data/archive/files/
```
编译打包后端服务
在项目根目录下执行Maven打包命令,跳过测试以加快构建速度:
```bash
mvn clean package -DskipTests
```
打包成功后,JAR文件将位于target/yichun-archive-system.jar。
基于Elasticsearch的全文检索实现
为了实现毫秒级的档案全文检索,系统集成了Elasticsearch。请确保ES服务已启动(建议版本7.17.x)。
1. 添加Maven依赖
在pom.xml中确保包含以下依赖:
```xml
org.springframework.boot
spring-boot-starter-data-elasticsearch
```
2. 定义档案文档实体

创建ArchiveDocument.java,用于映射ES中的索引结构:
```java
@Document(indexName = "yichun_archive", shardS = 3, replicas = 1)
public class ArchiveDocument {
@Id
private Long id;
@Field(type = FieldType.Keyword)
private String archiveCode;
@Field(type = FieldType.Text, analyzer = "ik_max_word")
private String title;
@Field(type = FieldType.Text, analyzer = "ik_max_word")
private String ocrContent;
@Field(type = FieldType.Date)
private Date createTime;
// Getters and Setters...
}
```
3. 实现检索Service层
编写ArchiveSearchService.java,实现高亮检索逻辑。以下是核心检索代码片段:
```java
@Service
public class ArchiveSearchService {
@Autowired
private ElasticsearchRestTemplate esTemplate;
public List