新建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 接口.
- 該類必須有默認的構(gòu)造方法,使用開發(fā)工具在糾錯的時候生成的構(gòu)造方法可能是是protected.這樣會導(dǎo)致插件安裝失敗,需要注意
- 注意使用的分詞器中依賴的lucene和neo4j中依賴的Lucene,要避免版本沖突.
配置加載服務(wù)
新建resources/META-INF/services/
目錄,創(chuàng)建文件org.neo4j.graphdb.schema.AnalyzerProvider
,內(nèi)容:
org.neo4j.kernel.api.impl.fulltext.analyzer.providers.AnsjAnalyzerProvider
打包到插件目錄
執(zhí)行 mvn package
生成jar文件,復(fù)制該文件到neo4j的plugin目錄下面,然后重啟neo4j服務(wù).
執(zhí)行下面的命令查看插件是否安裝正確:
call db.index.fulltext.listAvailableAnalyzers
如果結(jié)果集中出現(xiàn)我們定義的分詞器的名稱,則安裝成功.