2013-09-16 10 views
0

Я использую FTS3 в sqlite в проекте android. Проблема в том, что при поиске слова «или» в базе данных ожидаются больше слов.Sqlite FTS3 MATCH OR

"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

Пожалуйста, сообщите точное сообщение об ошибке, которое предоставляет вам DB Engine. –

ответ

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 Это другой вопрос. –

Смежные вопросы