7
votes

SQLite est-il construit sur Android avec le tokenizer ICU activé pour FTS?

Comme le titre dit: Peut-on utiliser ... à l'aide de FTS3 (Tokenizer ICU Th_th, ...) . Si nous pouvons, quelqu'un sait-il ce que les localités sont suportées et si elle varie selon la version de la plate-forme?


0 commentaires

3 Réponses :


4
votes

Non, seulement Tokenizer = Porter

Quand je spécifie Tokenizer = ICU, je reçois "android.database.sqlite.sqliteException: Tokenizer inconnu: ICU"

En outre, ce lien indique que si Android ne l'a pas compilé par défaut, ce ne sera pas disponible http://sqlite.phxsoftware.com/forums/t/2349.aspx


4 commentaires

Merci. Cela confirme mes soupçons. Dommage. :(


J'ai signalé ce problème il y a plus de 2 ans Code.google.com/p / Android / Problèmes / Détails? ID = 9199 mais Google garde la priorité à la priorité des fonds d'écran animés avec des vagues sur le toucher, des animations d'arrêt, des méthodes de déverrouillage non sécurisées (déverrouillage du visage), ... sur des problèmes tels que celui-ci.


@Gregm, le lien est mort.


Le lien que Eduardo posté indique que l'ICU est disponible dans Android 21 (Lollipop).



0
votes

J'ai du code Android qui utilise une tokénisation dans le lien ci-dessous, peut-être qu'il vous aidera:

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


0 commentaires

1
votes

pour l'API Niveau 21 ou UP, j'ai testé et trouvé que l'ICU Tokenizer est déjà disponible.

Toutefois, pour prendre en charge 90% + appareils, certains ouvrages peuvent être effectués. J'ai une idée de travail, qui est également mentionnée dans ma dernière question: Travailler autour de l'Android SQLite Recherche en texte intégral de texte asiatique

Vous pouvez porter la fonction Tokenizer ICU dans Java, ou un module Android natif, en tant que module séparé mais non impliqué directement dans SQLite. Utilisez ensuite la "Table de contenu externe" pour créer un lien vers la table virtuelle (prise en charge de FTS4).

Lorsque vous ajoutez du tuple, ajoutez du contenu normal à la table de contenu externe, mais invoquez le Tokenzier autonome seul pour ajouter des espaces artificiels à la limite des mots avant d'ajouter dans la table d'index virtuelle.

Lorsque vous faites du tuple Suppr, appelez à nouveau le Tokenzier pour mettre à jour la table de contenu avec des espaces artificiels, puis supprimez la table virtuelle TUPLE, puis supprimez la table de contenu TUPLE.

Ceci est un peu délicat, mais comparant une autre option de compilation d'une sqlite complète, il est déjà beaucoup moins d'effort.

Pour la table de contenu externe et comment cela fonctionne, veuillez vous reporter https: //www.sqlite .org / fts3.html # Section_6_2_2

Le tokéniseur ICU disponible est en fait là-bas dans Android SDK. Utilisez Breakiterator.getwordinstance. On dirait que cela prend même en charge le tokenizer basé sur le dictionnaire pour des langues telles que le chinois. http://developer.android.com/reference/java/text/balliterator. HTML


0 commentaires