新建maven项目
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<packaging>jar</packaging>
<groupId>com.gtja</groupId>
<artifactId>gtja-analyzer</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<neo4j.version>4.0.5</neo4j.version>
</properties>
<dependencies>
<dependency>
<groupId>org.neo4j</groupId>
<artifactId>neo4j</artifactId>
<version>${neo4j.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.ansj</groupId>
<artifactId>ansj_seg</artifactId>
<version>5.1.1</version>
</dependency>
<dependency>
<groupId>org.ansj</groupId>
<artifactId>ansj_lucene7_plug</artifactId>
<version>5.1.5.2</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>11</source>
<target>11</target>
</configuration>
</plugin>
<plugin>
<artifactId>maven-shade-plugin</artifactId>
<configuration>
<createDependencyReducedPom>false</createDependencyReducedPom>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer
implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
编写核心类
package org.neo4j.kernel.api.impl.fulltext.analyzer.providers;
import org.ansj.lucene7.AnsjAnalyzer;
import org.apache.lucene.analysis.Analyzer;
import org.neo4j.graphdb.schema.AnalyzerProvider;
public class AnsjAnalyzerProvider extends AnalyzerProvider {
public AnsjAnalyzerProvider() {
super("ansj");
}
@Override
public String description() {
return "中文索引工具";
}
public Analyzer createAnalyzer() {
return new AnsjAnalyzer(AnsjAnalyzer.TYPE.index_ansj);
}
}
- 自定义分词器必须继承AnalyzerProvider 接口.
- 该类必须有默认的构造方法,使用开发工具在纠错的时候生成的构造方法可能是是protected.这样会导致插件安装失败,需要注意
- 注意使用的分词器中依赖的lucene和neo4j中依赖的Lucene,要避免版本冲突.
配置加载服务
新建resources/META-INF/services/
目录,创建文件org.neo4j.graphdb.schema.AnalyzerProvider
,内容:
org.neo4j.kernel.api.impl.fulltext.analyzer.providers.AnsjAnalyzerProvider
打包到插件目录
执行 mvn package
生成jar文件,复制该文件到neo4j的plugin目录下面,然后重启neo4j服务.
执行下面的命令查看插件是否安装正确:
call db.index.fulltext.listAvailableAnalyzers
如果结果集中出现我们定义的分词器的名称,则安装成功.
网友评论