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
(I는 무엇입니까 모든 것을 그것, 정규식에서 집)
내 쿼리에 대해 어떻게 이런 결과를 얻을 수 있습니까?
household
house
내가 문 LIKE (dB 200000 개 행이 어쩌면 때문에)를 사용하는 경우
내 안드로이드 응용 프로그램 강제 종료 (그래서 난 단지 정규식 집 *에, 집으로 시작 결과를 원하는). 그래서 어떻게 든 MATCH와 LIKE 문을 결합해야합니까? 안드로이드에서이 작업을 수행 할 수 있습니까? 어쩌면 내가이 쿼리에서 얻은 후에 커서에서 일부 정규식을 실행하려고 시도해야합니까?
강제 종료 스택 트레이스를 게시하십시오. –
내가 LIKE를 사용할 때 : 문자열 선택 = KEY_WORD + "좋아요"; 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 FRTS FTSdictionary WHERE (suggest_text_1 LIKE) – stratocaster