2011-12-15 16 views
5

Obecnie mam tabelę diagnostyczną. Chcę, aby pola kodu i opisu można było przeszukiwać za pomocą FTS. Jak jednak rozumiem, tabele FTS nie obsługują indeksów i muszę być w stanie szybko wyszukać Diagnozę za pomocą identyfikatora diagnostycznego. Czy będę musiał stworzyć drugą wirtualną tabelę z wszystkimi danymi powielanymi tylko w celu przeszukiwania pełnego tekstu, czy też brakuje mi rozwiązania, w którym nie muszę duplikować wszystkich kodów diagnostycznych i opisów?Indeksy wyszukiwania pełnego tekstu SQLite

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

Czy znalazłeś odpowiedź na to pytanie? – tamsler

+0

Nie po prostu powieliłem pola w obu tabelach. – MobileGuy

Odpowiedz

5

Okazuje się tabelę FTS ma ukryty rowid pole, które można zapełnić podczas wprowadzania danych:

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 

Ty może stworzyć pole całkowitą w standardowej tabeli, która odnosi się do FTS table by rowid i przenieś kolumny, które chcesz przeszukać tekstowo do tabeli FTS.

Wszystkie potrzebne informacje here :)

Powiązane problemy