Fts4
public
abstract
@interface
Fts4
implements
Annotation
androidx.room.Fts4 |
Marks an Entity
annotated class as a FTS4 entity. This class will have a mapping SQLite
FTS4 table in the database.
FTS3 and FTS4 are SQLite virtual table modules that allows full-text searches to be performed on a set of documents.
An FTS entity table always has a column named rowid
that is the equivalent of an
INTEGER PRIMARY KEY
index. Therefore, an FTS entity can only have a single field
annotated with PrimaryKey
, it must be named rowid
and must be of
INTEGER
affinity. The field can be optionally omitted in the class but can still be
used in queries.
All fields in an FTS entity are of TEXT
affinity, except the for the 'rowid' and
'languageid' fields.
Example:
@Entity @Fts4 public class Mail { @PrimaryKey @ColumnInfo(name = "rowid") private final int rowId; private final String subject; private final String body; public Mail(int rowId, String subject, String body) { this.rowId = rowId; this.subject = subject; this.body = body; } public String getRowId() { return rowId; } public String getSubject() { return subject; } public void getBody() { return body; } }
See also:
Summary
Public methods | |
---|---|
Class<?>
|
contentEntity()
The external content entity who's mapping table will be used as content for the FTS table. |
String
|
languageId()
The column name to be used as 'languageid'. |
FtsOptions.MatchInfo
|
matchInfo()
The FTS version used to store text matching information. |
String[]
|
notIndexed()
The list of column names on the FTS table that won't be indexed. |
FtsOptions.Order
|
order()
The preferred 'rowid' order of the FTS table. |
int[]
|
prefix()
The list of prefix sizes to index. |
String
|
tokenizer()
The tokenizer to be used in the FTS table. |
String[]
|
tokenizerArgs()
Optional arguments to configure the defined tokenizer. |
Inherited methods | |
---|---|
Public methods
contentEntity
public Class<?> contentEntity ()
The external content entity who's mapping table will be used as content for the FTS table.
Declaring this value makes the mapping FTS table of this entity operate in "external content" mode. In such mode the FTS table does not store its own content but instead uses the data in the entity mapped table defined in this value. This option allows FTS4 to forego storing the text being indexed which can be used to achieve significant space savings.
In "external mode" the content table and the FTS table need to be synced. Room will create the necessary triggers to keep the tables in sync. Therefore, all write operations should be performed against the content entity table and not the FTS table.
The content sync triggers created by Room will be removed before migrations are executed and are re-created once migrations are complete. This prevents the triggers from interfering with migrations but means that if data needs to be migrated then write operations might need to be done in both the FTS and content tables.
Returns | |
---|---|
Class<?> |
The external content entity. |
See also:
languageId
public String languageId ()
The column name to be used as 'languageid'.
Allows the FTS4 extension to use the defined column name to specify the language stored in
each row. When this is defined a field of type INTEGER
with the same name must
exist in the class.
FTS queries are affected by defining this option, see the languageid= option documentation for details.
Returns | |
---|---|
String |
The column name to be used as 'languageid'. |
matchInfo
public FtsOptions.MatchInfo matchInfo ()
The FTS version used to store text matching information.
The default value is FtsOptions.MatchInfo.FTS4
. Disk space consumption can be reduced by
setting this option to FTS3, see
the matchinfo= option
documentation for details.
Returns | |
---|---|
FtsOptions.MatchInfo |
The match info version, either FtsOptions.MatchInfo.FTS4 or FtsOptions.MatchInfo.FTS3 .
|
notIndexed
public String[] notIndexed ()
The list of column names on the FTS table that won't be indexed.
Returns | |
---|---|
String[] |
A list of column names that will not be indexed by the FTS extension. |
See also:
order
public FtsOptions.Order order ()
The preferred 'rowid' order of the FTS table.
The default value is FtsOptions.Order.ASC
. If many queries are run against the FTS table use
ORDER BY row DESC
then it may improve performance to set this option to
FtsOptions.Order.DESC
, enabling the FTS module to store its data in a way that optimizes
returning results in descending order by rowid.
Returns | |
---|---|
FtsOptions.Order |
The preferred order, either FtsOptions.Order.ASC or FtsOptions.Order.DESC .
|
prefix
public int[] prefix ()
The list of prefix sizes to index.
Returns | |
---|---|
int[] |
A list of non-zero positive prefix sizes to index. |
See also:
tokenizer
public String tokenizer ()
The tokenizer to be used in the FTS table.
The default value is FtsOptions.TOKENIZER_SIMPLE
. Tokenizer arguments can be defined
with tokenizerArgs()
.
If a custom tokenizer is used, the tokenizer and its arguments are not verified at compile time.
Returns | |
---|---|
String |
The tokenizer to use on the FTS table. Built-in available tokenizers are
FtsOptions.TOKENIZER_SIMPLE , FtsOptions.TOKENIZER_PORTER and
FtsOptions.TOKENIZER_UNICODE61 . |
tokenizerArgs
public String[] tokenizerArgs ()
Optional arguments to configure the defined tokenizer.
Tokenizer arguments consist of an argument name, followed by an "=" character, followed by
the option value. For example, separators=.
defines the dot character as an
additional separator when using the FtsOptions.TOKENIZER_UNICODE61
tokenizer.
The available arguments that can be defined depend on the tokenizer defined, see the SQLite tokernizers documentation for details.
Returns | |
---|---|
String[] |
A list of tokenizer arguments strings. |