FTS3

FTS3 lets you define “fts3” virtual tables.

// CREATE VIRTUAL TABLE document USING fts3(content)
try db.create(virtualTable: "document", using: FTS3()) { t in
    t.column("content")
}
  • Options for Latin script characters. Matches the raw “remove_diacritics” tokenizer argument.

    See https://www.sqlite.org/fts3.html

    See more
  • Creates a FTS3 module suitable for the Database create(virtualTable:using:) method.

    // CREATE VIRTUAL TABLE document USING fts3(content)
    try db.create(virtualTable: "document", using: FTS3()) { t in
        t.column("content")
    }
    
  • Returns an array of tokens found in the string argument.

    For example:

    try FTS3.tokenize("SQLite database")  // ["sqlite", "database"]
    try FTS3.tokenize("Gustave Doré")     // ["gustave", "doré"])
    

    Results can be altered with an explicit tokenizer - default is .simple. See https://www.sqlite.org/fts3.html#tokenizer.

    try FTS3.tokenize("SQLite database", withTokenizer: .porter)   // ["sqlite", "databas"]
    try FTS3.tokenize("Gustave Doré", withTokenizer: .unicode61()) // ["gustave", "dore"])
    

    Tokenization is performed by the fts3tokenize virtual table described at https://www.sqlite.org/fts3.html#querying_tokenizers.

VirtualTableModule Adoption