Я использую базу данных sqlite FTS3 со своим приложением для Android.
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;
}
Если я сделаю запрос и произведу поиск 'house', я получу:
household
house
apartment house
big house
(я получаю все, что содержит дом, в регулярном выражении дом )
Как я могу получить такой результат для моего запроса?
household
house
(поэтому я хочу только результаты, начинающиеся с house, в regex house *)
Мое приложение для Android FORCE ЗАКРЫВАЕТСЯ, если я использую оператор LIKE (возможно, из-за того, что в db 200000 строк)
Так должен ли я как-то сочетать операторы MATCH и LIKE?
Возможно ли это сделать на Android, если нет, то мне следует попытаться запустить какое-нибудь регулярное выражение для курсора после того, как я получу его из этого запроса?