我的应用程序包含搜索功能,它将搜索数据库内的内容。我搜索的弱点是,我只能使用一个标签进行搜索,例如我只能搜索“cat”,它会在我的数据库中返回包含单词“cat”的内容,因为我LIKE
在 select 语句期间使用查询。如何使用多个标签进行搜索?例如“带黄球的猫”。这样,它将返回与插入的字符串相关的结果,如果数据库中不存在某些标签,它将忽略。为了更清楚,我AboutCat
在我的数据库中创建了一个示例表。它包含 3 列,即 id、c_question 和 c_keyword。
编号 = 1
c_question = 如果我们拉猫的胡子会发生什么?
c_keyword = 猫胡子拉
如果我使用列中的任何关键字进行搜索,c_keyword
例如“cat”或“cat mustache”或“mustache pull”,它将显示c_question
。但如果我搜索“猫拉”或“小胡子猫”,它就不会显示。那么,我如何通过忽略单词的顺序来搜索它,只要它匹配并存在于 c_keyword 列中?下面是我的代码...问我我的解释是否不清楚..
btnWanita.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
results.clear();
if(txtWnta.getText().toString().matches(""))
{
Toast.makeText(WanitaActivity.this, "Sila masukkan kata kunci", Toast.LENGTH_SHORT).show();
}
else
{
OpenHelper helper = new OpenHelper(getApplicationContext());
database = helper.getWritableDatabase();
try{
String sql = "select * from " +
OpenHelper.DB_TABLE_WANITA + " where " + OpenHelper.KEY_WANITA +
" like " + "'%" + txtWnta.getText().toString() + "%';";
Cursor c = database.rawQuery(sql, null);
if(c!= null)
{
c.moveToFirst();
int soalanColumn = c.getColumnIndex(OpenHelper.MASALAH_WANITA);
int getId = c.getColumnIndex(OpenHelper.ID_WANITA);
if(c.isFirst())
{
do
{
idList.add(c.getLong(getId));
results.add(c.getString(soalanColumn));
}while(c.moveToNext());
}
adapter.updateList(results);
}
}
catch(SQLException e)
{
Log.v("caer ", e.toString());
}
}
我的搜索在这里...
String sql = "select * from " +
OpenHelper.DB_TABLE_WANITA + " where " + OpenHelper.KEY_WANITA +
" like " + "'%" + txtWnta.getText().toString() + "%';";