Ошибка при использовании Lucene с базой данных H2 - PullRequest
0 голосов
/ 07 декабря 2018

Я хочу реализовать небольшой полнотекстовый поиск в моем проекте, который использует базу данных H2 (встроенная).Как я знаю, я должен использовать Lucene для полного текстового движка, чтобы найти релевантные результаты (не только содержащие результаты).Но я не могу использовать это.Этот блок инициации Lucene:

FullTextLucene.init(connection);
FullTextLucene.createIndex(connection, "PUBLIC", Tables.COURSES_DETAIL, Columns.NAME);

Также я использовал этот способ:

  stmt.execute(
      "create alias if not exists FTL_INIT for \"org.h2.fulltext.FullTextLucene.init\"");
  stmt.execute("call FTL_INIT()");
  stmt.execute(
      String.format("CALL FTL_CREATE_INDEX('PUBLIC','%s',%s)", Tables.COURSES_DETAIL, "NULL"));

Но эта ошибка происходит во время выполнения:

Error creating or initializing trigger "FTL_COURSES_DETAIL" object, class "org.h2.fulltext.FullTextLucene$FullTextTrigger", cause: "org.h2.message.DbException: Class ""org.h2.fulltext.FullTextLucene$FullTextTrigger"" not found [90086-197]"; see root cause for details; SQL statement:
CREATE TRIGGER IF NOT EXISTS "PUBLIC"."FTL_COURSES_DETAIL" AFTER INSERT, UPDATE, DELETE, ROLLBACK ON "PUBLIC"."COURSES_DETAIL" FOR EACH ROW CALL "org.h2.fulltext.FullTextLucene$FullTextTrigger"

После того, как я понизил рейтинг H2В библиотеке последней стабильной версии (1.4.196) ошибка была изменена:

Caused by: java.lang.NoSuchMethodError: org.apache.lucene.store.FSDirectory.open(Ljava/io/File;)Lorg/apache/lucene/store/FSDirectory;

и иногда эта ошибка:

Exception calling user-defined function: "init(conn1: url=jdbc:default:connection user=INFC): org.apache.lucene.store.FSDirectory.open(Ljava/io/File;)Lorg/apache/lucene/store/FSDirectory;"; SQL statement:
call FTL_INIT()

1 Ответ

0 голосов
/ 07 декабря 2018

Я нашел решение.Но я знаю, что это не лучший вариант.

Я понизил Lucene lib до 3.6.2 и использовал простые запросы вместо FullTextLucene функций.

...