SQLite улучшенный синтаксис запросов на Android

У меня есть следующий запрос SQLite, который прекрасно работает на моей локальной машине:

SELECT * FROM ftdata WHERE ftdata MATCH 'phrase1:this AND phrase2:that'

Похоже, это не возвращает тот же набор результатов на моем устройстве Android, как на моем рабочем столе. Он возвращает гораздо меньше результатов на Android. Этот запрос возвращает правильные результаты для обоих:

SELECT * FROM ftdata WHERE ftdata MATCH 'phrase1:this phrase2:that'

Однако в идеале я хотел бы объединить запросы AND и OR вместо того, чтобы принудительно использовать AND.

Существуют ли определенные функции расширенного синтаксиса запросов, которые Android не поддерживает? Я использую неправильный синтаксис в первой инстанции?

1 ответ

Решение

В разных прошивках Android используются разные версии SQLite, но синтаксис FTS долгое время не менялся.

Ваша проблема в том, что большинство (всех?) Поставщиков Android не поддерживают расширенный синтаксис запросов.

Вы должны ограничиться запросами, которые работают с обоими синтаксисами. Либо выполните PRAGMA compile_options, чтобы проверить, ENABLE_FTS3_PARENTHESIS установлено.

Другие вопросы по тегам