2013-09-16 92 views
0

我在android項目中的sqlite中使用FTS3。問題是,當我搜索單詞「或」時,數據庫期望更多的單詞。Sqlite FTS3匹配或

"SELECT * FROM words WHERE Palabra MATCH '"+word+"'"; 

這個效果很好,除非單詞是「或」。

如何在數據庫中搜索單詞「或」?

以下是錯誤:

android.database.sqlite.SQLiteException: malformed MATCH expression: [OR] (code 1) 
    at android.database.sqlite.SQLiteConnection.nativeExecuteForCursorWindow(Native   Method) 
    at android.database.sqlite.SQLiteConnection.executeForCursorWindow(SQLiteConnection.java:845) 
    at  android.database.sqlite.SQLiteSession.executeForCursorWindow(SQLiteSession.java:836) 
    at android.database.sqlite.SQLiteQuery.fillWindow(SQLiteQuery.java:62) 
    at android.database.sqlite.SQLiteCursor.fillWindow(SQLiteCursor.java:144) 
    at android.database.sqlite.SQLiteCursor.getCount(SQLiteCursor.java:133) 

感謝

+0

你試過'單引號'?看看這是否有幫助:http://www.sqlite.org/lang_keywords.html –

+0

它已經在單引號。 –

+0

請發佈數據庫引擎正在給您的確切錯誤消息。 –

回答

0

要搜索「或」字(或其他MATCH表達式關鍵字),你必須引用它們(雙引號通常用於短語搜索,是無害的單個詞):

sqlite> select * from t where t match 'NOT OR'; 
Error: malformed MATCH expression: [NOT OR] 
sqlite> select * from t where t match '"NOT" "OR"'; 
TO BE OR NOT TO BE 

搜索詞「或」工作得很好,因爲比賽表達式關鍵字是大小寫敏感的;它可能是最容易使用小寫搜索詞:

sqlite> select * from t where t match 'not or'; 
TO BE OR NOT TO BE 
+0

帶雙引號的解決方案奏效。 –

+0

如何在表達式中用'''執行匹配表達式? – Arjun

+0

@Arjun這是一個不同的問題。 –