搜索引擎底层核心技术Lucune(三)-使用IKAnalyzer分词器
搜索引擎底层核心技术Lucune(四)-使用IKAnalyzer分词器
IKAnalyzer 是林良益开源的一个非常著名和老牌的 Java 中文分词库,目前 OSChina 网站也是使用 IK 分词器。
巫师两年前做搜索的时候第一次用到IK分词器,还通过支付宝捐赠给作者一笔钱呢。遗憾的是IKAnalyzer在2012年停止了更新,巫师找到的版本号是IKAnalyzer2012FF_u1.jar。
将IKAnalyzer分词器安装到本地的maven仓库
由于在maven项目中使用,而IKAnalyzer有没有maven的依赖,就需要将IKAnalyzer安装到本地仓库。
前置条件:需要电脑上安装好了maven环境,能够执行mvn命令。
mvn install:install-file -Dfile=IKAnalyzer2012FF_u1.jar -DgroupId=org.wltea.ik-analyzer -DartifactId=ik-analyzer -Dversion=4.10.2 -Dpackaging=jar
参数说明:
- -Dfile 是文件路径的意思,写全路径,本例需要更改。
- -DgroupId 组织机构的名称,本例中不用更改
- -DartifactId 一般项目的名称,本例中不用更改
- -Dversion 安装到maven仓库的版本号,可更改,我随便写的。
- -Dpackaging 安装包的类型
pom文件中的依赖信息
<!-- 这里的ik分词器的版本号没有对应ik真实的版本号。ik2012年就停止更新了 -->
<dependency>
<groupId>org.wltea.ik-analyzer</groupId>
<artifactId>ik-analyzer</artifactId>
<version>4.10.2</version>
</dependency>
创建索引时的实例代码
public void createIndexWithIkAnaylzer() throws Exception {
// 1. Directory 是用来存储索引信息
Directory d = FSDirectory.open(new File("index"));
// 2. IKAnalyzer 主要是用来分词
IKAnalyzer analyzer = new IKAnalyzer();
// 3、在IndexWriterConfig 需要指定我们使用的分词器
IndexWriterConfig conf = new IndexWriterConfig(Version.LATEST, analyzer);
// 4、创建一个indexWriter,需要制定索引数据保存在哪里。 指定一个IndexWriterConfig.
IndexWriter indexWriter = new IndexWriter(d, conf);
// 5、创建一个Docment对象
Document doc = new Document();
doc.add(new IntField("id", 1, Store.YES));
doc.add(new TextField("title", "我想学习大数据知识", Store.YES));
doc.add(new TextField("content", "如何学大数据,大数据技术哪家强", Store.YES));
// 6.为document创建索引。
indexWriter.addDocument(doc);
indexWriter.close();
}