2012-02-08 61 views
3

我在我的場景中遇到了特殊字符的問題。 我有一個使用fts3創建的sqlite數據庫。無法從sqlite中檢索特殊字符fts3

當我使用SELECT col_1, col_2, offsets(table) FROM table WHERE table MATCH 'h*' LIMIT 50;

我能夠得到它以H開頭的單詞。

,但是當我使用

SELECT col_1, col_2, offsets(table) FROM table WHERE table MATCH '@*' LIMIT 50; 

我沒有得到它與@開頭的字符串。

我哪裏錯了?任何關於方法的指針都會很棒。

回答

0

我認爲你描述的行爲發生是因爲SQLite FTS3 uses tokenizer called "simple" by default。字符@被丟棄,因爲它不是字母數字字符,它的UTF代碼點不超過127.我對此的解釋是FTS不適用於搜索特殊字符,它用於搜索自然文本。

我建議的修復不是使用FTS進行這種查詢,而是使用LIKE運算符。或者您可以嘗試搜索其他可用的標記器或write your on in C

+0

謝謝了,雖然我有點晚了。 – Arup 2016-04-12 08:49:46