2010-04-12 109 views

回答

6

確保您在FTS索引創建正確FTS列:

CREATE VIRTUAL TABLE email_fts USING fts3(subject, body, "to", "from"); 

然後你就可以搜索個人FTS列:

SELECT rowid 
FROM email_fts 
WHERE "to" MATCH '[email protected]' 

UNION 

SELECT rowid 
FROM email_fts 
WHERE "from" MATCH '[email protected]' 

編輯:我以前的答案WHERE子句中有一個OR。顯然sqlite不支持結合OR查詢與MATCH條件。上述聯合工作。

FTS文檔在這裏,這是文檔中使用的示例之一。

http://sqlite.org/fts3.html

+0

無法找到相關文檔。 我得到這樣的錯誤: 源碼> .schema email_fts 創建虛擬TABLE [email_fts]使用FTS3( [從], [主題], [體], [到], [CC], 並[f ilename] sqlite> SELECT * FROM email_FTS WHERE「to」MATCH'[email protected]'OR「from」 MATCH'b @ c。 com'; SQL錯誤:無法使用的功能相匹配的請求的上下文 sqlite的> – Manoj 2010-04-13 10:12:22

+3

@Manoj,我不知道SQLite不支持的結合'或'和'MATCH'。奇怪。我更新了使用'UNION'的答案,它工作正常。如果您需要與非FTS數據結合使用,則可以將聯合包裝在子查詢中並將其聯接到其他表上。 – 2010-04-13 13:29:05