В фильтре столбцов , da sh означает НЕ смотреть на следующие столбцы. Возможно, что то, что вы вводите как поисковый запрос, анализируется так, что -2019 считается фильтром столбца. Я не уверен, как это происходит, если фильтры столбцов помечены двоеточием, но это объясняет сообщение об ошибке. Я могу воспроизвести его, постараюсь в дальнейшем разобраться.
Однако вы можете искать фразу из нескольких слов, заключив ее в двойные кавычки, поэтому "2018-2019"
и "2018 2019"
оба совпадают (настройки токенизатора по умолчанию используют da sh в качестве разделителя слов). Однако поиск 2018 2019
будет сопоставлять что-либо с обоими словами, независимо от того, где они появляются, а не только рядом.
Примеры:
sqlite> CREATE VIRTUAL TABLE test USING fts5(body);
sqlite> INSERT INTO test VALUES ('in the years 2018-2019 something happened.');
sqlite> INSERT INTO test VALUES ('It was 2018 and then it was 2019');
sqlite> SELECT * FROM test WHERE test MATCH '2018-2019';
Error: no such column: 2019
sqlite> SELECT * FROM test WHERE test MATCH '"2018-2019"';
body
------------------------------------------
in the years 2018-2019 something happened.
sqlite> SELECT * FROM test WHERE test MATCH '"2018 2019"';
body
------------------------------------------
in the years 2018-2019 something happened.
sqlite> SELECT * FROM test WHERE test MATCH '2018 2019';
body
------------------------------------------
in the years 2018-2019 something happened.
It was 2018 and then it was 2019
Подробнее о синаксе запроса см. В разделе документация .