全文搜索android
我对全文搜索有问题。当我搜索它只是搜索第一个单词 例如,我有“项目测试”,我可以通过搜索项目找到它,但当我尝试搜索“测试”时,我找不到它,请告诉我如何给你我的代码全文搜索android,android,database,sqlite,Android,Database,Sqlite,我对全文搜索有问题。当我搜索它只是搜索第一个单词 例如,我有“项目测试”,我可以通过搜索项目找到它,但当我尝试搜索“测试”时,我找不到它,请告诉我如何给你我的代码 public static Cursor fetchProjectCursor(String name) throws IllegalAccessException, InstantiationException { Cursor cursor = DataBaseUtil.dataBaseAccess().
public static Cursor fetchProjectCursor(String name)
throws IllegalAccessException, InstantiationException {
Cursor cursor = DataBaseUtil.dataBaseAccess().query(
_PROJECT_TABLE,
_FIELD_NAME,
"(" + _NAME + ")" + " LIKE " + "(" + "\""
+ name + "%" + "\"" + ")", null, null, null, _MODIFIED_DATE);
return cursor;
}
请帮助我,只需在名称前添加“%”
Cursor cursor = DataBaseUtil.dataBaseAccess().query(
_PROJECT_TABLE,
_FIELD_NAME,
"(" + _NAME + ")" + " LIKE " + "(" + "\"" + "%"
+ name + "%" + "\"" + ")", null, null, null, _MODIFIED_DATE);
或
试试这个
return db.rawQuery("select * from your_table_name where column_name like ?", new String[] {"%"+name+"%"});
它返回游标。尝试在名称参数之前添加“%”,如下所示:
public static Cursor fetchProjectCursor(String name)
throws IllegalAccessException, InstantiationException {
Cursor cursor = DataBaseUtil.dataBaseAccess().query(
_PROJECT_TABLE,
_FIELD_NAME,
"(" + _NAME + ")" + " LIKE " + "(" + "\"" + "%"
+ name + "%" + "\"" + ")", null, null, null, _MODIFIED_DATE);
return cursor;
}
查看SQLite中的内置全文支持
CREATE VIRTUAL TABLE mytable USING fts3 (text TEXT);
SELECT * FROM mytable WHERE text MATCH "text to match";
在fts3虚拟表中,即使声明整数,所有表都是文本。所以,将表拆分为两个表可能会有所帮助。它需要少量的工作,但可以在数据库层上进行拆分。但结果会更好。通过更多的行和更大的行,您可以看到速度有了很大的提高。i tride这个返回DataBaseUtil.dataBaseAccess().rawQuery(“从_PROJECT_表中选择*,其中_namelike?”,新字符串[]{“%”+NAME+“%”);}但不工作的logcat告诉我没有这样的表:_PROJECT_table和我的表类似于公共静态最终字符串_CREATE_PROJECT_table=“CREATE table IF not EXISTS”+_PROJECT_table+”(“+_ID+”INTEGER PRIMARY KEY AUTOINCREMENT,“+_PROJECT_ID+”LONG not NULL,“+_GROUP_ID+”LONG NULL,“+_COMPANY_ID+”“LONG NULL,++u USER\u ID+“LONG NULL,++u USER\u UUID+”LONG NULL,++u CREATE\u DATE+“VARCHAR(50)NULL,++u MODIFIED\u DATE+”VARCHAR(50)NULL,“你需要把_PROJECT\u表的值,而不是你的_表的名称和_name值,而不是列的名称。”