1

我在一个 android 项目的 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)

谢谢

4

1 回答 1

0

要搜索单词“OR”(或其他 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
于 2013-09-16T19:16:17.767 回答