全文搜索android



我在全文搜索时遇到问题。当我搜索时,它只是搜索第一个单词例如,我有"项目测试",我可以通过搜索项目找到它,但当我尝试搜索"测试"时,我找不到它,请告诉我如何做,我给你我的代码

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+"%"});

它返回Cursor。

尝试在名称参数前添加一个"%",如下所示:

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虚拟表中,即使您声明了INTEGER,所有表都是TEXT格式的。所以,您可能会发现将表拆分为两个表很有帮助。它需要一些工作,但可以在数据层上进行拆分。但结果会更好。有了更多的行和更大的行,你可以看到速度的大幅提高。

最新更新