2012-08-01 42 views
2

SQLITE3的全文搜索功能 - FTS3 - 允許使用MATCH運營商進行快速全文檢索:在SQL查詢中,其中有一個MATCH(來源Sqlite3的全文搜索限制不允許OR與MATCH。解決方法?

SELECT ItemId FROM docs WHERE docs.text MATCH 'linux' 

但是,它不支持或運營商的任何地方:12):

SELECT ItemId FROM docs WHERE docs.text MATCH 'linux' OR column=value 
error: unable to use function MATCH in the requested context 

(不要與或FTS3運營商查詢本身,即SELECT ItemId FROM docs WHERE docs.text MATCH 'linux OR unix'這工作得很好)混淆

有沒有辦法來REW說出查詢,以便它可以工作(即使它有點慢)?

回答

2

重寫使用臨時視圖將工作作爲查詢預期:

CREATE TEMP VIEW view1 AS SELECT ItemId FROM docs WHERE docs.text MATCH 'linux' 
SELECT * FROM docs WHERE ItemId IN view1 OR column=value 
DROP VIEW view1 

速度將媲美「直接」查詢(沒有臨時視圖)如果臨時視圖不是「掃」即它不會產生很多行。

相關問題