diff --git a/lib/search/word_search/entry_id_query.dart b/lib/search/word_search/entry_id_query.dart index 45d8d48..232511e 100644 --- a/lib/search/word_search/entry_id_query.dart +++ b/lib/search/word_search/entry_id_query.dart @@ -73,7 +73,6 @@ String _filterFTSSensitiveCharacters(String word) { JOIN "JMdict_EntryScore" USING ("elementId") WHERE "${tableName}FTS"."reading" MATCH ? || '*' AND "JMdict_EntryScore"."type" = '${tableName == JMdictTableNames.kanjiElement ? 'k' : 'r'}' - ${!countOnly ? 'LIMIT ?' : ''} ), non_fts_results AS ( SELECT DISTINCT @@ -86,19 +85,16 @@ String _filterFTSSensitiveCharacters(String word) { WHERE "reading" LIKE '%' || ? || '%' AND "${tableName}"."entryId" NOT IN (SELECT "entryId" FROM "fts_results") AND "JMdict_EntryScore"."type" = '${tableName == JMdictTableNames.kanjiElement ? 'k' : 'r'}' - ${!countOnly ? 'LIMIT ?' : ''} ) - SELECT ${countOnly ? 'COUNT("entryId") AS count' : '"entryId", MAX("score") AS "score"'} + SELECT ${countOnly ? 'COUNT(DISTINCT "entryId") AS count' : '"entryId", MAX("score") AS "score"'} FROM ( - SELECT * FROM fts_results + SELECT * FROM "fts_results" UNION - SELECT * FROM non_fts_results + SELECT * FROM "non_fts_results" ) - GROUP BY "entryId" - ORDER BY - "score" DESC, - "entryId" ASC + ${!countOnly ? 'GROUP BY "entryId"' : ''} + ${!countOnly ? 'ORDER BY "score" DESC, "entryId" ASC' : ''} ${pageSize != null ? 'LIMIT ?' : ''} ${offset != null ? 'OFFSET ?' : ''} ''' @@ -106,9 +102,7 @@ String _filterFTSSensitiveCharacters(String word) { [ _filterFTSSensitiveCharacters(word), _filterFTSSensitiveCharacters(word), - if (!countOnly) pageSize, _filterFTSSensitiveCharacters(word), - if (!countOnly) pageSize, if (pageSize != null) pageSize, if (offset != null) offset, ] @@ -241,13 +235,12 @@ Future _queryEnglishCount( ) async { final result = await connection.rawQuery( ''' - - SELECT - COUNT(DISTINCT "${JMdictTableNames.sense}"."entryId") AS "count" - FROM "${JMdictTableNames.senseGlossary}" - JOIN "${JMdictTableNames.sense}" USING ("senseId") - WHERE "${JMdictTableNames.senseGlossary}"."phrase" LIKE ? - ''' + SELECT + COUNT(DISTINCT "${JMdictTableNames.sense}"."entryId") AS "count" + FROM "${JMdictTableNames.senseGlossary}" + JOIN "${JMdictTableNames.sense}" USING ("senseId") + WHERE "${JMdictTableNames.senseGlossary}"."phrase" LIKE ? + ''' .trim(), [ '%$word%',