From a6a48c196d3772c5f1dea0312b0788c50f5adcb1 Mon Sep 17 00:00:00 2001 From: h7x4 Date: Fri, 20 Jun 2025 23:10:10 +0200 Subject: [PATCH] word_search: filter input for FTS chars --- lib/search/word_search/entry_id_query.dart | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/lib/search/word_search/entry_id_query.dart b/lib/search/word_search/entry_id_query.dart index 5f6c29b..20fbaae 100644 --- a/lib/search/word_search/entry_id_query.dart +++ b/lib/search/word_search/entry_id_query.dart @@ -27,6 +27,18 @@ SearchMode _determineSearchMode(String word) { } } +/// FTS reacts to certain characters, so we should filter them out. +String _filterFTSSensitiveCharacters(String word) { + return word + .replaceAll('-', '') + .replaceAll('*', '') + .replaceAll('+', '') + .replaceAll('(', '') + .replaceAll(')', '') + .replaceAll('^', '') + .replaceAll('\"', ''); +} + (String, List) _kanjiReadingTemplate( String tableName, String word, { @@ -78,8 +90,8 @@ SearchMode _determineSearchMode(String word) { ''' .trim(), [ - word, - word, + _filterFTSSensitiveCharacters(word), + _filterFTSSensitiveCharacters(word), if (!countOnly) pageSize, word, if (!countOnly) pageSize,