2011-12-15 11 views
5

Actualmente tengo una tabla de diagnóstico. Quiero hacer que los campos de código y descripción puedan buscarse usando FTS. Sin embargo, como lo entiendo, las tablas FTS no son compatibles con los índices y necesito poder buscar Diagnóstico por ID de diagnóstico muy rápidamente. ¿Tendré que crear una segunda tabla virtual con todos los datos duplicados solo para la búsqueda de texto completo o me falta una solución donde no tengo que duplicar todos mis códigos de diagnóstico y descripciones?Índices de búsqueda de texto completo de SQLite

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

¿Ha encontrado la respuesta a esta pregunta todavía? – tamsler

+0

No, acabo de duplicar los campos en ambas tablas. – MobileGuy

Respuesta

5

Resulta que una mesa de FTS tiene un rowid campo oculto, que puede rellenar los datos cuando está introduciendo:

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 

Se puede crear un campo entero de la tabla estándar que se refiere a la FTS table by rowid, y mueva las columnas en las que desea hacer búsquedas de texto en la tabla FTS.

Toda la información que necesita here :)

Cuestiones relacionadas