GraphDB 内で独自のアナライザー実装を指定する方法を理解するのに問題があります。ドキュメントと他のいくつかの投稿を読んだ後、.jar の依存関係に関する問題が発生しているようです。
ボイラープレートCustomAnalyzer
とCustomAnalyzerFactory
クラスを作成するために、 にあるlucene.jar
andを使用する必要がlucene-core.jar
ありましたlib/plugins/lucene
。私のgradleビルドファイルは次のようになります:
group 'com.example'
version '1.0-SNAPSHOT'
apply plugin: 'java'
sourceCompatibility = 1.8
repositories {
mavenCentral()
}
dependencies {
testCompile group: 'junit', name: 'junit', version: '4.12'
compile fileTree(dir: 'libs/lucene', include: '*.jar')
}
注:libs/lucene
私がコピーしたgradleプロジェクトのフォルダーで、graphdbスタンドアロンサーバーディストリビューションlucene.jar
にlucene-core.jar
配置されていますlib/plugins/lucene
コードをコンパイルし、 を使用して jar ファイルを作成しgradle clean jar
たら、それを にコピーしlib/plugins/lucene-connector
ます。
Graph-db を再起動し、コネクタに移動し、UI を使用して lucene-connector を追加しようとしました。アナライザーを指定できるところまでたどり着きました。ただし、com.example.CustomAnalyzer を指定すると、次のエラー メッセージが表示されます。
Caused by: java.lang.NoClassDefFoundError: org/apache/lucene/analysis/ASCIIFoldingFilter
いろいろ調べてみたところ、lucene-core.jar ファイルが 2 つあることがわかりました。1 つはlibs/plugins/lucene
で、もう1 つはlibs/plugins/lucene-connector
です。lucene-core.jar
in にはクラスlibs/plugins/lucene-connector
がありません。ASCIIFoldingFilter
単一のjarに含まれるすべての依存関係を含むfatJarを作成しようとしましたが、その場合、graphdbはコネクタのロードに失敗します。
どこが間違っているのかよくわかりませんが、jarファイルを構築および参照する方法に関係があると感じています。
また、CustomAnalyzer から ASCIIFilter を削除しようとしましたが、まったく新しい一連のエラーが発生します。
Caused by: com.ontotext.trree.sdk.BadRequestException: Unable to instantiate analyzer class, only analyzers with a default constructor or a constructor accepting single Version parameter are possible: com.example.CustomAnalyzer
at com.ontotext.trree.plugin.externalsync.impl.lucene4.CreateAnalyzerUtil.instantiateAnalyzer(CreateAnalyzerUtil.java:70)
at com.ontotext.trree.plugin.externalsync.impl.lucene4.CreateAnalyzerUtil.createAnalyzerFromClassName(CreateAnalyzerUtil.java:42)
at com.ontotext.trree.plugin.externalsync.impl.lucene4.Lucene4ExternalStore.open(Lucene4ExternalStore.java:182)
at com.ontotext.trree.plugin.externalsync.impl.lucene4.Lucene4ExternalStore.initImpl(Lucene4ExternalStore.java:718)
... 60 common frames omitted