Class FullText

java.lang.Object
org.h2.fulltext.FullText
Direct Known Subclasses:
FullTextLucene

public class FullText extends Object
This class implements the native full text search. Most methods can be called using SQL statements as well.
  • Constructor Details

    • FullText

      public FullText()
  • Method Details

    • init

      public static void init(Connection conn) throws SQLException
      Initializes full text search functionality for this database. This adds the following Java functions to the database:
      • FT_CREATE_INDEX(schemaNameString, tableNameString, columnListString)
      • FT_SEARCH(queryString, limitInt, offsetInt): result set
      • FT_REINDEX()
      • FT_DROP_ALL()
      It also adds a schema FT to the database where bookkeeping information is stored. This function may be called from a Java application, or by using the SQL statements:
       CREATE ALIAS IF NOT EXISTS FT_INIT FOR
            "org.h2.fulltext.FullText.init";
       CALL FT_INIT();
       
      Parameters:
      conn - the connection
      Throws:
      SQLException - on failure
    • createIndex

      public static void createIndex(Connection conn, String schema, String table, String columnList) throws SQLException
      Create a new full text index for a table and column list. Each table may only have one index at any time.
      Parameters:
      conn - the connection
      schema - the schema name of the table (case sensitive)
      table - the table name (case sensitive)
      columnList - the column list (null for all columns)
      Throws:
      SQLException - on failure
    • reindex

      public static void reindex(Connection conn) throws SQLException
      Re-creates the full text index for this database. Calling this method is usually not needed, as the index is kept up-to-date automatically.
      Parameters:
      conn - the connection
      Throws:
      SQLException - on failure
    • dropIndex

      public static void dropIndex(Connection conn, String schema, String table) throws SQLException
      Drop an existing full text index for a table. This method returns silently if no index for this table exists.
      Parameters:
      conn - the connection
      schema - the schema name of the table (case sensitive)
      table - the table name (case sensitive)
      Throws:
      SQLException - on failure
    • dropAll

      public static void dropAll(Connection conn) throws SQLException
      Drops all full text indexes from the database.
      Parameters:
      conn - the connection
      Throws:
      SQLException - on failure
    • search

      public static ResultSet search(Connection conn, String text, int limit, int offset) throws SQLException
      Searches from the full text index for this database. The returned result set has the following column:
      • QUERY (varchar): the query to use to get the data. The query does not include 'SELECT * FROM '. Example: PUBLIC.TEST WHERE ID = 1
      • SCORE (float) the relevance score. This value is always 1.0 for the native fulltext search.
      Parameters:
      conn - the connection
      text - the search query
      limit - the maximum number of rows or 0 for no limit
      offset - the offset or 0 for no offset
      Returns:
      the result set
      Throws:
      SQLException - on failure
    • searchData

      public static ResultSet searchData(Connection conn, String text, int limit, int offset) throws SQLException
      Searches from the full text index for this database. The result contains the primary key data as an array. The returned result set has the following columns:
      • SCHEMA (varchar): the schema name. Example: PUBLIC
      • TABLE (varchar): the table name. Example: TEST
      • COLUMNS (array of varchar): comma separated list of quoted column names. The column names are quoted if necessary. Example: (ID)
      • KEYS (array of values): comma separated list of values. Example: (1)
      • SCORE (float) the relevance score. This value is always 1.0 for the native fulltext search.
      Parameters:
      conn - the connection
      text - the search query
      limit - the maximum number of rows or 0 for no limit
      offset - the offset or 0 for no offset
      Returns:
      the result set
      Throws:
      SQLException - on failure
    • setIgnoreList

      public static void setIgnoreList(Connection conn, String commaSeparatedList) throws SQLException
      Change the ignore list. The ignore list is a comma separated list of common words that must not be indexed. The default ignore list is empty. If indexes already exist at the time this list is changed, reindex must be called.
      Parameters:
      conn - the connection
      commaSeparatedList - the list
      Throws:
      SQLException - on failure
    • setWhitespaceChars

      public static void setWhitespaceChars(Connection conn, String whitespaceChars) throws SQLException
      Change the whitespace characters. The whitespace characters are used to separate words. If indexes already exist at the time this list is changed, reindex must be called.
      Parameters:
      conn - the connection
      whitespaceChars - the list of characters
      Throws:
      SQLException - on failure
    • asString

      protected static String asString(Object data, int type) throws SQLException
      INTERNAL. Convert the object to a string.
      Parameters:
      data - the object
      type - the SQL type
      Returns:
      the string
      Throws:
      SQLException - on failure
    • createResultSet

      protected static SimpleResultSet createResultSet(boolean data)
      Create an empty search result and initialize the columns.
      Parameters:
      data - true if the result set should contain the primary key data as an array.
      Returns:
      the empty result set
    • parseKey

      protected static String[][] parseKey(Connection conn, String key)
      Parse a primary key condition into the primary key columns.
      Parameters:
      conn - the database connection
      key - the primary key condition as a string
      Returns:
      an array containing the column name list and the data list
    • quoteSQL

      protected static String quoteSQL(Object data, int type) throws SQLException
      INTERNAL. Convert an object to a String as used in a SQL statement.
      Parameters:
      data - the object
      type - the SQL type
      Returns:
      the SQL String
      Throws:
      SQLException - on failure
    • removeAllTriggers

      protected static void removeAllTriggers(Connection conn, String prefix) throws SQLException
      Remove all triggers that start with the given prefix.
      Parameters:
      conn - the database connection
      prefix - the prefix
      Throws:
      SQLException - on failure
    • setColumns

      protected static void setColumns(int[] index, ArrayList<String> keys, ArrayList<String> columns) throws SQLException
      Set the column indices of a set of keys.
      Parameters:
      index - the column indices (will be modified)
      keys - the key list
      columns - the column list
      Throws:
      SQLException - on failure
    • search

      protected static ResultSet search(Connection conn, String text, int limit, int offset, boolean data) throws SQLException
      Do the search.
      Parameters:
      conn - the database connection
      text - the query
      limit - the limit
      offset - the offset
      data - whether the raw data should be returned
      Returns:
      the result set
      Throws:
      SQLException - on failure
    • addWords

      protected static void addWords(org.h2.fulltext.FullTextSettings setting, Set<String> set, Reader reader)
      Add all words in the given text to the hash set.
      Parameters:
      setting - the fulltext settings
      set - the hash set
      reader - the reader
    • addWords

      protected static void addWords(org.h2.fulltext.FullTextSettings setting, Set<String> set, String text)
      Add all words in the given text to the hash set.
      Parameters:
      setting - the fulltext settings
      set - the hash set
      text - the text
    • hasChanged

      protected static boolean hasChanged(Object[] oldRow, Object[] newRow, int[] indexColumns)
      Check if a the indexed columns of a row probably have changed. It may return true even if the change was minimal (for example from 0.0 to 0.00).
      Parameters:
      oldRow - the old row
      newRow - the new row
      indexColumns - the indexed columns
      Returns:
      true if the indexed columns don't match
    • closeAll

      public static void closeAll()
      INTERNAL Close all fulltext settings, freeing up memory.
    • throwException

      protected static SQLException throwException(String message) throws SQLException
      Throw a SQLException with the given message.
      Parameters:
      message - the message
      Returns:
      never returns normally
      Throws:
      SQLException - the exception