java - 如何在java中使用H2数据库的全文搜索功能?

标签 java database indexing h2

任何人请解释如何在 java 程序的帮助下使用 H2 嵌入式数据库的全文搜索。

执行“SELECT * FROM FT_SEARCH_DATA('word', 0, 0)”将返回一个选择查询字符串。我是否需要再次执行此操作以获得最终结果?

最佳答案

一个使用H2全文索引的Java程序是the unit test program .那里的一个例子:

    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 script example .也许您对 Javadocs for the FullText class 感兴趣- 这将解释 FT_SEARCH_DATA/searchData 返回的内容。

关于java - 如何在java中使用H2数据库的全文搜索功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6611764/

相关文章:

database - 何时以及如何在 Grails 中创建索引?

mysql - 如何将数据库的字段设置为数组?

database - 克服 Windows Azure Sql 数据库 150 GB 大小限制

python - 从列表或元组中显式选择项目

python - numpy 花式索引轴顺序

java - 在java中使用静态对象来实现比较可以接受吗?

基于 Java 的 Telegram Bot Api : How to send emojis?

java - 修剪从 java 中的 ResultSet .getDouble() 检索的指数类型的值

java - Linux 中的运行时执行问题

java - 想在java中实现简单的面向消息的中间件