1
0
Fork 0

fixed suggestions sometimes not appearing when they are much longer than the currently typed sequences and there are no words between them

This commit is contained in:
sspanak 2024-02-05 19:21:14 +02:00 committed by Dimo Karaivanov
parent 952e09aad7
commit 071a4c29c2

View file

@ -81,14 +81,14 @@ public class ReadOps {
switch (sequence.length()) { switch (sequence.length()) {
case 2: case 2:
generations = wordFilter.isEmpty() ? 1 : Integer.MAX_VALUE; generations = wordFilter.isEmpty() ? 1 : 10;
break; break;
case 3: case 3:
case 4: case 4:
generations = wordFilter.isEmpty() ? 2 : Integer.MAX_VALUE; generations = wordFilter.isEmpty() ? 2 : 10;
break; break;
default: default:
generations = Integer.MAX_VALUE; generations = 10;
break; break;
} }
@ -114,7 +114,7 @@ public class ReadOps {
positions.appendFromDbRanges(cursor); positions.appendFromDbRanges(cursor);
} }
if (positions.size < minPositions) { if (positions.size < minPositions && generations < Integer.MAX_VALUE) {
Logger.d(LOG_TAG, "Not enough positions: " + positions.size + " < " + minPositions + ". Searching for more."); Logger.d(LOG_TAG, "Not enough positions: " + positions.size + " < " + minPositions + ". Searching for more.");
try (Cursor cursor = db.rawQuery(getFactoryWordPositionsQuery(language, sequence, Integer.MAX_VALUE), null)) { try (Cursor cursor = db.rawQuery(getFactoryWordPositionsQuery(language, sequence, Integer.MAX_VALUE), null)) {
positions.appendFromDbRanges(cursor); positions.appendFromDbRanges(cursor);
@ -161,7 +161,8 @@ public class ReadOps {
sql.append(")"); sql.append(")");
} else { } else {
sql.append(" sequence = ").append(sequence).append(" OR sequence BETWEEN ").append(sequence).append("1 AND ").append(sequence).append("9"); String rangeEnd = generations == 10 ? "9" : "999999";
sql.append(" sequence = ").append(sequence).append(" OR sequence BETWEEN ").append(sequence).append("1 AND ").append(sequence).append(rangeEnd);
sql.append(" ORDER BY `start` "); sql.append(" ORDER BY `start` ");
sql.append(" LIMIT 100"); sql.append(" LIMIT 100");
} }
@ -178,7 +179,7 @@ public class ReadOps {
" AND (sequence = " + sequence; " AND (sequence = " + sequence;
if (generations > 0) { if (generations > 0) {
sql += " OR sequence BETWEEN " + sequence + "1 AND " + sequence + "9)"; sql += " OR sequence BETWEEN " + sequence + "1 AND " + sequence + "999999)";
} else { } else {
sql += ")"; sql += ")";
} }