SQLite su Android è stato costruito con il tokenizer ICU abilitato per FTS?

Come dice il titolo: possiamo usare ...USING fts3(tokenizer icu th_TH, ...) . Se possiamo, qualcuno sa quali sono le localizzazioni supportte e se varia a seconda della versione piattaforma?

  • GLES10.glGetIntegerv restituisce 0 solo in Lollipop
  • Android: come controllare se è abilitata una AccessibilityService particolare?
  • Come includere un boolean in una clausola sql lite where
  • android SharedPreferences putStringSet ordina / ordina
  • Ritarda la chiamata su onQueryTextChange () in SearchView.OnQueryTextListener con SearchView
  • Avviare una nuova attività dal frammento
  • Crea un effetto trasparente di background sfocato
  • Come accedere a Gamer ID di Google Play Games
  • Come verificare se l'attività è in primo piano o in background visibile?
  • Il titolo di ViewPager non viene visualizzato finché non lo scorrimento
  • Come esportre i dati in file csv in Android?
  • coprire l'arte su android
  • 3 Solutions collect form web for “SQLite su Android è stato costruito con il tokenizer ICU abilitato per FTS?”

    No, solo tokenizer = porttore

    Quando specifico tokenizer = icu, ottengo "android.database.sqlite.SQLiteException: unknown tokenizer: icu"

    Inoltre, questo collegamento indica che se Android non la compila per impostazione predefinita, non sarà disponibile http://sqlite.phxsoftware.com/forums/t/2349.aspx

    Per API Level 21 o superiore, ho provato e ho scoperto che il tokenizer ICU è già disponibile.

    Tuttavia, per supportre i dispositivi 90% +, è ansible fare un certo lavoro. Ho un'idea di lavoro, che è anche menzionata nella mia altra domanda: Lavorare attorno a ricerca di text full-text di Android SQLite per il text asiatico

    Puoi portre la function di tokenizer ICU in java o un module Android nativo come module separato, ma non direttamente coinvolto in SQLite. Quindi utilizzare la "tabella dei contenuti esterni" per collegarsi alla tabella virtuale (supportta da FTS4).

    Quando si aggiunge la tupla, aggiungere il contenuto normale alla tabella dei contenuti esterni, ma invoca il token di stand alone per aggiungere spazi artificiali al limite delle parole prima di aggiungere alla tabella indice virtuale.

    Quando si esegue l'eliminazione delle tuple, ricall nuovamente il tokenizzatore per aggiornare la tabella dei contenuti con spazi artificiali, quindi eliminare la tupla della tabella virtuale e quindi eliminare la tuple della tabella dei contenuti.

    Questo è un po 'complicato, ma confrontando un'altra opzione di ri-compilare un SQLite completo, è già molto less sforzo.

    Per la tabella dei contenuti esterni e come funziona, consulta https://www.sqlite.org/fts3.html#section_6_2_2

    Il tokenizer ICU disponibile è realmente presente in SDK di Android. Utilizzare BreakIterator.getWordInstance. Sembra che supporti anche il tokenizer basato su dictionary per lingue come il cinese. http://developer.android.com/reference/java/text/BreakIterator.html

    Ho un codice Android che utilizza la tattenizzazione nel collegamento qui sotto, forse sarà di aiuto:

    https://github.com/gast-lib/gast-lib/blob/master/app/src/root/gast/playground/speech/food/db/FtsIndexedFoodDatabase.java

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.