對於大數據庫中的搜索,實際上應該使用SQLite查看FTS3表。此擴展程序旨在執行全文搜索,並且比LIKE
更有效。
這裏是解釋上的Android應用在一般的搜索鏈接: http://developer.android.com/guide/topics/search/search-dialog.html#PerformingSearch
此鏈接顯示瞭如何創建和訪問虛擬表,以用於查詢: http://developer.android.com/training/search/search.html
此外,在這個博客上全例如: http://blog.andresteingress.com/2011/09/30/android-quick-tip-using-sqlite-fts-tables/
基本上是一個虛擬表必須創建,用例如下面的查詢:
private static final String FTS_TABLE_CREATE =
"CREATE VIRTUAL TABLE " + FTS_VIRTUAL_TABLE +
" USING fts3 (" +
COL_WORD + ", " +
COL_DEFINITION + ")";
然後,光標可以使用下面的函數getWordMatches
檢索:
public Cursor getWordMatches(String query, String[] columns) {
String selection = COL_WORD + " MATCH ?";
String[] selectionArgs = new String[] {query+"*"};
return query(selection, selectionArgs, columns);
}
private Cursor query(String selection, String[] selectionArgs, String[] columns) {
SQLiteQueryBuilder builder = new SQLiteQueryBuilder();
builder.setTables(FTS_VIRTUAL_TABLE);
Cursor cursor = builder.query(mDatabaseOpenHelper.getReadableDatabase(),
columns, selection, selectionArgs, null, null, null);
if (cursor == null) {
return null;
} else if (!cursor.moveToFirst()) {
cursor.close();
return null;
}
return cursor;
}
所有這些都從Android文檔到來,見上文鏈接。
謝謝@dst的鏈接,我會閱讀並優化我的查詢 –