2014-02-08 4 views
3

Я пытаюсь создать приложение для Android и хочу разрешить быстрый поиск, поэтому он изучал FTS для sqlite для Android. Я вижу, как создать его, но было интересно несколько вещей:FTS (полнотекстовый поиск) sqlite как реализовать таблицу FTS?

Table_words - мой стол слов

  1. Если я создаю новую таблицу FTS т.е. Table_words_fts - это заменить table_words, которое он добавил как просто еще одна таблица?

  2. Если добавить в качестве другой таблицы, я должен добавить данные одновременно в таблицу FTS, как и в table_words через мой код?

  3. Если это так, я могу опустить некоторые столбцы, которые не являются необходимыми, и включить другие, которые не находятся в таблице table_words?

  4. Если я просто заменяю таблицу номером 1, то это влияет на регулярные запросы?

  5. Если я не заменяю его, но вам не нужно хранить данные в новой таблице FTS, он просто добавляется, чтобы быстрее читать таблицу?

Мое понимание до сих пор является следующее, это отдельная таблица, добавить добавить данные к нему на протяжении всего моего кода, и я могу опустить некоторые столбцы, но не добавлять новые. Кроме того, как я бы хранить данные были бы точно так же, как я добавить его к другим таблицам ...

Вот моя идея работать с ним ... Создание таблицы:

// create FTS tables for quicker matches for search 
db.execSQL("CREATE VIRTUAL TABLE " + TABLE_WORDS_FTS + " USING fts3(" 
    + KEY_ID + ", " + KEY_DICTIONARYID + ", " + KEY_WORD1 + " , " 
    + KEY_WORD2 + " , " + KEY_WORD3 + ", " + KEY_WORD4 + " " + ");"); 

Создать обычную таблицу, а также:

// Words table create statement 
private static final String CREATE_TABLE_WORDS = "CREATE TABLE " 
    + TABLE_WORDS + "(" + KEY_ID + " INTEGER PRIMARY KEY," 
    + KEY_DICTIONARYID + " INTEGER," + KEY_WORD1 + " TEXT," + KEY_WORD2 
    + " TEXT," + KEY_WORD3 + " TEXT," + KEY_WORD4 + " TEXT" + ")"; 
db.execSQL(CREATE_TABLE_WORDS); 

остальное я буду делать обычным способом ... но чтобы резюмировать: Пытаясь выяснить, если таблица создается дополнительно к таблице? Если в нем регулярно хранятся данные?

ответ

2
  1. Да, он действует как обычный стол, он не заменяет существующие.

  2. Да, вам нужно добавить данные отдельно в таблицу FTS, но вы можете сделать это с помощью триггера, если хотите.

  3. Да, у вас могут быть разные столбцы.

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

  5. Да, вы можете создать таблицу FTS с содержимым somwhere else; см. Contentless FTS Tables.

+0

Что это такое, без содержания, я прочитал его, но с трудом понимаю ... как он работает, если он не хранит его, как он читает его точно? – Lion789

+0

также, какие преимущества у него есть на самом деле, имея строки? – Lion789

+0

без содержания здесь означает, что хранится только инвертированный индекс, а не исходный контент, из которого был создан индекс. –

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