Индексы полнотекстового поиска SQLite - PullRequest
5 голосов
/ 15 декабря 2011

У меня сейчас таблица диагнозов. Я хочу сделать поля кода и описания доступными для поиска, используя FTS. Однако, насколько я понимаю, таблицы FTS не поддерживают индексы, и мне нужно очень быстро найти Диагностику по диагнозу ID. Должен ли я создать вторую виртуальную таблицу со всеми дублированными данными только для полнотекстового поиска, или мне не хватает решения, в котором мне не нужно дублировать все мои коды диагностики и описания?

CREATE TABLE Diagnosis (  
    diagnosisID     INTEGER PRIMARY KEY NOT NULL,  
    code            TEXT,  
    collect         INTEGER NOT NULL,  
    description     TEXT  
);

1 Ответ

5 голосов
/ 11 апреля 2012

Оказывается, в таблице FTS есть скрытое поле rowid, которое можно заполнять при вводе данных:

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

Вы можете создать целочисленное поле в стандартной таблице, которое ссылается на таблицу FTS по rowid, и переместить столбцы, которые вы хотите сделать доступными для поиска по тексту, в таблицу FTS.

Вся необходимая информация здесь :)

...