项目环境:JDK1.8,Maven3.39,IDEA
项目仓库:Github地址
目前数据库表结构:
t_corpus_base
:基础预料表,存储所有的会话,目前为创建普通索引,完整匹配(select * from t_corpus_base where content = '你好' limit 1
)。在后续文章中会修改为%
匹配,到时候再做全文检索。
base | 类型 | 注释 | 索引 |
---|---|---|---|
id | int | id | PRIMIRY |
content | varchar(300) | 内容 | varchar(150) |
t_corpus_tree
:对应表,qid
为会话开始ID,aid
为该句话对应的回答或者下一个用户可能的问题,后续会做一些表结构的调整。暂时够基础功能使用。
tree | 类型 | 注释 | 索引 |
---|---|---|---|
id | int | id | PRIMIRY |
qid | int | 会话开始ID | int |
aid | int | 会话下一个ID | int |
t_corpus_butt
:在tree
中没有查到的内容,暂时放到这里,用于接下来的学习。表结构后续会发生大的变化,当前仅做存储未查询到的会话。
butt | 类型 | 注释 | 索引 |
---|---|---|---|
id | int | id | PRIMIRY |
qid | int | 会话开始ID | int |
表设计请遵循单一功能原则
maven 依赖库与模块划分(够支持当前所需,后续有需求再增加):
<modules>
<module>model</module>
<module>dao</module>
<module>service</module>
<module>common</module>
<module>web</module>
</modules>
<properties>
<spring.version>4.3.5.RELEASE</spring.version>
<mybatis.version>3.4.1</mybatis.version>
<mybatis-spring.version>1.3.1</mybatis-spring.version>
<mysql.version>6.0.6</mysql.version>
</properties>
<dependencies>
<!-- Spring包 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
<exclusions>
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${spring.version}</version>
</dependency>
<!-- redis cache related.....start -->
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-redis</artifactId>
<version>1.6.0.RELEASE</version>
</dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.7.3</version>
</dependency>
<!-- redis cache related.....end -->
<!-- mybatis驱动包 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>${mybatis.version}</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>${mybatis-spring.version}</version>
</dependency>
<!-- mysql驱动包 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
</dependency>
<!-- dbcp数据源 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.0.29</version>
</dependency>
<!-- junit测试包 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<!-- json数据 -->
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.9.13</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-core-asl</artifactId>
<version>1.9.13</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.34</version>
</dependency>
<!-- log4j日志包 -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>1.7.20</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.1.7</version>
</dependency>
<!-- jstl 标签库 -->
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>1.1.2</version>
</dependency>
<!--分词-->
<dependency>
<groupId>edu.stanford.nlp</groupId>
<artifactId>stanford-corenlp</artifactId>
<version>3.8.0</version>
</dependency>
<dependency>
<groupId>edu.stanford.nlp</groupId>
<artifactId>stanford-corenlp</artifactId>
<version>3.8.0</version>
<classifier>models</classifier>
</dependency>
<dependency>
<groupId>edu.stanford.nlp</groupId>
<artifactId>stanford-corenlp</artifactId>
<version>3.8.0</version>
<classifier>models-chinese</classifier>
</dependency>
</dependencies>
<build>
<finalName>smart</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.3</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>9.2.1.v20140609</version>
<configuration>
<httpConnector>
<port>9441</port>
</httpConnector>
<scanIntervalSeconds>2</scanIntervalSeconds>
</configuration>
</plugin>
</plugins>
</build>
jdbc.properties(注意URL后边的参数):
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/smart-butt?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&useSSL=false
jdbc.username=
jdbc.password=
Maven 基于idea的多模块项目搭建
有太多的文章都是授之鱼而非渔。准备 IDEA,MAVEN 和 JDK的环境
下面开始新建模块:
img_5.pngimg_6.png
img_7.png
img_8.png
这里做第一个示例,接下来同样的步骤创建完 service, model, dao(注意不要创建web)。此时的项目结构是:
img_9.png
web 有些特殊,是这样创建的:
img_10.png
一直Next到底就好了。
接下来我们开始配置模块的依赖关系:
web:common, service, model
service: common, model, dao
dao: model
Mac 下使用 command + ;
打开项目架构先进行dao 的依赖配置
img_12.png
接下来自己按照上边所说的依赖关系挨个进行设置,应用,确定即可。
但是这并不是结束了,因为我们是maven的多模块项目,所以还应当按照我们配置的依赖在每个模块的pom中配置依赖的模块(我这里使用web模块为示例):
img_15.png
其余的模块大家自己配置。
接下来引入我们所需要的库,为了方便,我们引入到最外层的Pom文件中:
img_13.png将文章开头的需要的库包括插件粘贴进去即可,maven将会自动导入,这个地方如果之前没有下载过可能会很慢。为了方便我们管理,我们打开右侧的maven选项,如果没有,点击左下角按钮打开:
img_14.png这里因为我们是多模块项目,所以在修改了依赖中的内容之后,一定要在最外层进行clean
与install
(或者 compile),保证全部的模块都重新的编译。
接下来,我们去web模块中配置spring,servlet,jdbc,log等内容
img_17.png我们发现没有java文件夹,所以直接右键创建一个,然后在项目结构中将其指定为源码类型的文件夹。
img_18.png
接下来就是里边的spring等配置了,这些大家直接去仓库看吧,基本都相同。至此,我们大致的将语料库的架子搭建了起来。
网友评论