[英]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.