Как использовать функцию полнотекстового поиска в базе данных H2 в Java? - PullRequest
1 голос
/ 07 июля 2011

Кто-нибудь, пожалуйста, объясните, как использовать полнотекстовый поиск для встроенной базы данных H2 с помощью Java-программы.

выполнение "SELECT * FROM FT_SEARCH_DATA ('word', 0, 0)" возвращаетвыберите строку запроса.Нужно ли выполнить это снова, чтобы получить окончательный результат?

1 Ответ

6 голосов
/ 08 июля 2011

Java-программа, использующая полнотекстовый индекс H2, является программой модульного тестирования .Пример оттуда:

    Connection conn = ...
    Statement stat = conn.createStatement();
    stat.execute("CREATE ALIAS IF NOT EXISTS FT_INIT FOR \"org.h2.fulltext.FullText.init\"");
    stat.execute("CALL FT_INIT()");
    FullText.setIgnoreList(conn, "to,this");
    FullText.setWhitespaceChars(conn, " ,.-");
    stat.execute("CREATE TABLE TEST(ID INT PRIMARY KEY, NAME VARCHAR)");
    stat.execute("INSERT INTO TEST VALUES(1, 'Welcome to this world, One_Word')");
    stat.execute("CALL FT_CREATE_INDEX('PUBLIC', 'TEST', NULL)");
    ResultSet rs;
    rs = stat.executeQuery("SELECT * FROM FT_SEARCH('Welcome', 0, 0)");
    assertTrue(rs.next());
    assertEquals("QUERY", rs.getMetaData().getColumnLabel(1));
    assertEquals("SCORE", rs.getMetaData().getColumnLabel(2));
    assertEquals("\"PUBLIC\".\"TEST\" WHERE \"ID\"=1", rs.getString(1));
    assertEquals("1.0", rs.getString(2));
    rs = stat.executeQuery("SELECT * FROM FT_SEARCH_DATA('One', 0, 0)");
    assertFalse(rs.next());
    rs = stat.executeQuery("SELECT * FROM FT_SEARCH_DATA('One_Word', 0, 0)");
    assertTrue(rs.next());
    rs = stat.executeQuery("SELECT * FROM FT_SEARCH_DATA('Welcome', 0, 0)");
    assertTrue(rs.next());

Существует также пример сценария SQL .И, возможно, вас интересуют Javadocs для класса FullText - это объяснит, что FT_SEARCH_DATA / searchData возвращает.

...