Я использую расширение sqlite для FTS и, похоже, не могу понять, как выполнить поиск по фразе для одного столбца, сопоставляя другой текст с другим. Обычно поиск по фразе работает для ВСЕХ столбцов, например:
SELECT * from ftstable where ftstable MATCH '"Phrase With Spaces In It"';
и для определенного столбца:
SELECT * from ftstable where body MATCH '"Phrase With Spaces In It"';
, но не работает для агрегированного поиска в двух столбцах, таких как:
SELECT * from ftstable where ftstable MATCH 'body:"Phrase With Spaces In It" title:"The*"';
и вместо этого бросает:
Error: malformed MATCH expression: [body:"Phrase With Spaces In It" title:"The*"]
Я нашел эту ветку, утверждая, что это невозможно (ноябрь 2011 г.): http://osdir.com/ml/sqlite-users/2011-11/msg00363.html. Кто-нибудь знает, возможно ли это сейчас?
Я могу только представить обходной путь, использующий «INTERSECT», но проблема в том, что получающиеся два набора, которые пересекаются, слишком велики, и запрос будет намного медленнее и память неэффективна, тем более, что я развернул его на мобильном устройстве.
Спасибо.