2011-12-26 2 views
4

Может SQLITE FT3 или FT4 сделать что-то вродеSQLite полнотекстового поиска джокер

SELECT * FROM MyTable WHERE body MATCH '*qlite' 

Я знаю, что это:

SELECT * FROM MyTable WHERE body MATCH 'Sqlite*' 

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

+1

Чтобы уточнить, вы запрашиваете запрос о возврате строк, если в содержимом столбца тела есть какие-либо слова, чем конец qlite? – TetonSig

ответ

3

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

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

выберите * из MyTable где reversebody матча (REVERSE ('qlite') + '*')

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

+0

Основная проблема с этой стратегией заключается в том, что подстановочные знаки в середине фразы также не будут найдены. Например, «* имя *» в «firstnames». –

Смежные вопросы