繁体   English   中英

全文搜索android

[英]full text search android

全文搜索出现问题。 当我搜索它只是搜索第一个单词时,例如我有“ Project Test”,我可以通过搜索Project来找到它,但是当我尝试搜索“ Test”时,我找不到它,请告诉我该怎么做,我给你我的代码

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;
}

请帮我

只需在name之前添加“%”即可

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

它返回游标。

尝试在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虚拟表中,即使您声明INTEGER,所有表也都位于TEXT中。 因此,将表拆分为两个表可能会有所帮助。 它需要一点点的工作,但是可以在数据库层上进行拆分。 但是结果会更好。 随着行数和行数的增加,您可以看到速度有了很大的提高。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM