私はAndroidアプリケーションでsqlite FTS3データベースを使用しています。Androidでsqlite(FTS付き)を使用
public Cursor getWordMatches(String query, String[] columns) {
String selection = KEY_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);
builder.setProjectionMap(mColumnMap);
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;
}
私は、クエリを作成し、 '家' を検索した場合、私はなります:
household
house
apartment house
big house
を(私はに家を持っているすべてを取得していますそれで、正規表現でハウス)
私のクエリでこのような結果を得るにはどうすればいいですか?
household
house
(だから私は唯一*正規表現の家に家で始まる結果を、したい)
私は文と同様に使用している場合(デシベルは200000行を持っているかもしれないので)私のAndroid用アプリケーションFORCEが閉じます。 私はどういうわけかMATCHとLIKE文を組み合わせるべきですか? Androidでこれを行うことも可能ですか?もし私がこのクエリから得た後、カーソル上でいくつかの正規表現を実行しようとするべきではないのであれば?
力のスタックトレースを完全に投稿してください。 –
LIKEを使用する場合: 文字列選択= KEY_WORD + "LIKE"; String [] selectionArgs = new String [] {"'" +クエリ+ "%" "}; 12-13 21:11:50.756:ERROR/AndroidRuntime(267):android.database.sqlite.SQLiteException:near ")これはエラーです(完全なスタックトレースが必要な場合は、 ":構文エラー:、コンパイル中:SELECT rowid AS _id、suggest_text_1、suggest_text_2 FTSdictionary WHERE(suggest_text_1 LIKE) – stratocaster