sqlite полнотекстовый поиск по шаблону - PullRequest
4 голосов
/ 26 декабря 2011

Может ли Sqlite FT3 или FT4 делать что-то вроде

SELECT * FROM MyTable WHERE body MATCH '*qlite'

Я знаю это:

SELECT * FROM MyTable WHERE body MATCH 'Sqlite*'

работает, но похоже, что '%like' операция не работает в полном тексте.

1 Ответ

3 голосов
/ 26 декабря 2011

Насколько я понимаю, это ограничение FTS в целом, на разных платформах, что поиск по суффиксу / постфиксу невозможен.

Лучший обходной путь, который я видел, - это добавить в MyTable столбец с именем ReverseBody и сохранить в нем обратную сторону столбца Body, а также добавить его в индекс FT.Затем вы пишете запросы, такие как

select * из MyTable, где обратное тело соответствует (REVERSE ('qlite') + '*')

Я работаю в SQL Server, поэтому у нас есть встроенный REVERSE. Iне думаю, что SQLite делает, но вы можете добавить пользовательские функции, чтобы сделать это, как описано здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...