Как хранить двоичные данные в SQLite Tables с включенным FTS3?

StackOverflow https://stackoverflow.com/questions/4176260

  •  09-10-2019
  •  | 
  •  

Вопрос

Я перехожу приложение с использованием обычной базы данных SQLite к одному с включенным полноценным текстовым поиском. Он имеет несколько колонн BLOB, которые хранят такие вещи, как цифровые подписи, которые, очевидно, не нужно проиндексировать. Я прочитал, что другие люди решают это, перемещая все нетекстовые данные в отдельный, не-FTS3, который они внутреннее соединение с таблицей FTS3 при необходимости, но это очень нерешенное решение. Нет ли никакого способа просто исключить определенные столбцы от индексации?

Это было полезно?

Решение

Это не нерешено. SQL реляционный, присоединения являются естественной частью жизни. Мышление, что они «неелегант» - это то, что приводит к стереотипно плохую конструкции баз данных.

Вы определили, что у вас есть два разных вида данных - текст вам часто нужно искать, и Blobs вы не делаете. Существует абсолютно ничего плохого или не исцелена о хранении этих в двух разных таблицах.

Другие советы

Вы можете сделать его меньше хлопот, создав вид присоединения, который вы можете выбрать снова. Вы все еще можете использовать совпадение в столбцах, которые возникли в таблице FTS, и вам не нужно делать это присоединиться каждый раз, когда вы хотите запросить.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top