Вопрос

I currently have a diagnosis table. I want to make the code and description fields searchable using FTS. As I understand it though, FTS tables don't support indexes and I need to be able to lookup Diagnosis by diagnosisID very quickly. Am I going to have to create a second virtual table with all of the data duplicated just for full text searching or am I missing a solution where I dont have to duplicate all of my diagnosis codes and descriptions?

CREATE TABLE Diagnosis (  
    diagnosisID     INTEGER PRIMARY KEY NOT NULL,  
    code            TEXT,  
    collect         INTEGER NOT NULL,  
    description     TEXT  
);
Это было полезно?

Решение

Turns out an FTS table has a hidden rowid field, which you can populate when you are entering data:

sqlite> create virtual table test1 using fts3;
sqlite> insert into test1 values ("This is a document!");
sqlite> insert into test1(docid,content) values (5,"this is another document");
sqlite> select rowid,* from test1;
1|This is a document!
5|this is another document

You could create an integer field in your standard table that refers to the FTS table by rowid, and move the columns you wish to make text-searchable into the FTS table.

All the info you need here :)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top