Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/178.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
全文搜索android_Android_Database_Sqlite - Fatal编程技术网

全文搜索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值,而不是列的名称。”