# Fts3

Artifact: [androidx.room:room-common](https://developer.android.com/jetpack/androidx/releases/room) [View Source](https://cs.android.com/search?q=file:androidx/room/Fts3.kt+class:androidx.room.Fts3) Added in [2.1.0](https://developer.android.com/jetpack/androidx/releases/room#2.1.0)

*** ** * ** ***


```
@Target(allowedTargets = [AnnotationTarget.CLASS])
@Retention(value = AnnotationRetention.BINARY)
public annotation Fts3
```

<br />

*** ** * ** ***

Marks an `https://developer.android.com/reference/androidx/room/Entity` annotated class as a FTS3 entity. This class will have a mapping SQLite FTS3 table in the database.

[FTS3 and FTS4](https://www.sqlite.org/fts3.html) 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 `https://developer.android.com/reference/androidx/room/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' field.

Example:

```
@Entity
@Fts3
data class Mail (
  @PrimaryKey
  @ColumnInfo(name = "rowid")
  val rowId: Int,
  val subject: String,
  val body: String
)
```

| See also |
|---|---|
| `https://developer.android.com/reference/androidx/room/Entity` |   |
| `https://developer.android.com/reference/androidx/room/Dao` |   |
| `https://developer.android.com/reference/androidx/room/Database` |   |
| `https://developer.android.com/reference/androidx/room/PrimaryKey` |   |
| `https://developer.android.com/reference/androidx/room/ColumnInfo` |   |

## Summary

| ### Public methods |
|---|---|
| `final @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/lang/String.html` | `https://developer.android.com/reference/androidx/room/Fts3#getTokenizer()()` The tokenizer to be used in the FTS table. |
| `final @https://developer.android.com/reference/androidx/annotation/NonNull String[]` | `https://developer.android.com/reference/androidx/room/Fts3#getTokenizerArgs()()` Optional arguments to configure the defined tokenizer. |

## Public methods

### getTokenizer

```
public final @NonNull String getTokenizer()
```

The tokenizer to be used in the FTS table.

The default value is `https://developer.android.com/reference/androidx/room/FtsOptions#TOKENIZER_SIMPLE()`. Tokenizer arguments can be defined with `https://developer.android.com/reference/androidx/room/Fts3#(kotlin.String,kotlin.Array)`.

If a custom tokenizer is used, the tokenizer and its arguments are not verified at compile time.

See [SQLite tokenizers documentation](https://www.sqlite.org/fts3.html#tokenizer) for more details.

| Returns |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/lang/String.html` | The tokenizer to use on the FTS table. Built-in available tokenizers are `https://developer.android.com/reference/androidx/room/FtsOptions#TOKENIZER_SIMPLE()`, `https://developer.android.com/reference/androidx/room/FtsOptions#TOKENIZER_PORTER()` and `https://developer.android.com/reference/androidx/room/FtsOptions#TOKENIZER_UNICODE61()`. |

| See also |
|---|---|
| `https://developer.android.com/reference/androidx/room/Fts3#(kotlin.String,kotlin.Array)` |   |

### getTokenizerArgs

```
public final @NonNull String[] getTokenizerArgs()
```

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 {@link FtsOptions#TOKENIZER_UNICODE61} tokenizer.


The available arguments that can be defined depend on the tokenizer defined, see the
\[SQLite tokernizers documentation\](https://www.sqlite.org/fts3.html#tokenizer) for details.

| Returns |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull String[]` | A list of tokenizer arguments strings. |