我的全文搜索有问题。当我搜索它时,只搜索第一个单词 例如我有“项目测试”我可以找到它只是搜索项目,但当我尝试搜索“测试”我找不到它请告诉我怎么做我给你我的代码
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;
}
请帮帮我
答案 0 :(得分:0)
只需在名称前添加“%”即可。
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。
答案 1 :(得分:0)
尝试在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;
}
答案 2 :(得分:0)
在SQLite中查看构建全文支持。
CREATE VIRTUAL TABLE mytable USING fts3 (text TEXT);
SELECT * FROM mytable WHERE text MATCH "text to match";
在fts3虚拟表中,即使您声明INTEGER,所有表都在TEXT中。因此,您可能会发现将表拆分为两个表很有帮助。它需要一点点工作,但可以在数据库层完成分裂。但结果会更好。通过更多行和更大的线条,您可以看到速度的大幅提升。