Recherche de texte intégral SQLITE

Recherche de texte intégral SQLITE
Dans la base de données, le composant Table Virtual FTS5 est utilisé pour effectuer des recherches complètes. Une table virtuelle est un plugin personnalisable SQLite. Une table virtuelle est similaire à une table ordinaire. La distinction entre une table virtuelle et une table régulière serait d'où proviendrait les données. SQLite interroge le schéma de base de données pour obtenir des données lors du traitement d'un tableau ordinaire. Chaque fois que vous visitez une table virtuelle, Sqlite, en revanche, invoque le code du programme pour récupérer le contenu. Certaines activités, telles que l'obtention de données de nombreux ensembles de données, peuvent être gérées par code personnalisé avec une logique spécifique.

Commençons par cet article en démarrant la base de données SQLite - C-Libary de SQL sur votre système. Pour cela, essayez le mot-clé «SQLite3» comme instruction sur le shell et vous êtes prêt à partir. Le terminal de la base de données SQLite a été lancé. Nous avons essayé le .tables instruction sur sa zone de requête pour répertorier toutes les tableaux déjà existants de la base de données. Malheureusement, nous n'avons pas de tables dans la base de données en ce moment. Ainsi, nous devons créer une table pour effectuer une recherche en texte intégral.

Créons un nouveau test de table dans la base de données SQLite à l'aide de la requête Créer la table de la base de données. Ce tableau contiendra la colonne ID de type entier et le titre de type de texte. Les deux colonnes ne doivent pas être nuls selon la requête de la table de création.

Créer un test de table (id int clé primaire, texte de titre non nul);

Après la création d'un tableau de test, nous devons y mettre des valeurs. Nous avons ajouté les valeurs pour l'ID et le titre des colonnes comme indiqué. Après cela, nous avons essayé l'instruction «Sélectionner» avec le caractère «*» pour récupérer tous les enregistrements nouvellement insérés d'un tableau de test.

Insérer dans Test (ID, Title) Valeurs (1, «merveilles»);
Insérer dans les valeurs de test (id, titre) (2, «maléfique»);
Insérer dans les valeurs de test (id, title) (3, «Doctor Strange»);
Insérer dans le test (id, titre) Valeurs (4, «Lucky»);
Insérer dans les valeurs de test (id, title) (5, «rush»); SELECT * à partir du test;

Recherdons la recherche en texte intégral dans la colonne de titre de la table de test où l'enregistrement correspond à «FTS5».

Sélectionnez * à partir du test où le titre correspond à «FTS5»;

Avançons-nous pour effectuer une recherche en texte intégral sur la table. La recherche en texte intégral peut également être utilisée sur les tables virtuelles. Ainsi, nous devons créer une nouvelle table virtuelle. Pour cela, nous utilisons la commande Create Virtual Table avec le nom d'une table, «Données». Suivi par le mot-clé utilisant FTS5 et les noms de colonne dans les supports. Ces colonnes ne contiennent aucun type de données tandis que la création d'un tableau comme FTS5 a été appliquée.

Créer des données de table virtuelle à l'aide de FTS5 (titre, info);

Après avoir créé la table virtuelle, nous devons insérer des enregistrements dans les deux colonnes «Title» et «Info» d'une table «Data». Nous avons donc ajouté un total de 5 enregistrements dans les deux colonnes «Title» et «Info» d'un tableau de données. Vous pouvez voir que les colonnes contiennent des valeurs de texte contenant de petites et grandes quantités de données dans.

Insérer dans les valeurs de données (titre, info) («merveilles», «Ce film représente environ 7 amis coincés dans le pays des merveilles.

Gagné un total de 230 millions de dollars);

Insérer dans les données (titre, info) Valeurs («maléfique», «Ce film concerne la fantaisie, la magie et la romance célèbres sur les jeunes. Totalement gagné de 300 millions de dollars);
Insérer dans les valeurs de données (titre, info) («Inception», «Ce film consiste à changer votre avenir en faisant les rêves. Gagné un total de 500 millions de dollars);
Insérer dans les données (Titre, Info) Values ​​(«2020», «Ce film décrit que le monde se réunira en 2020 après avoir frappé un énorme tsunami. Gagné un total de 600 millions de dollars);
Insérer dans les valeurs de données (titre, info) («Doctor Strange», «Il s'agit de la magie et de son utilisation pour guérir. Gagné un total de 800 millions de dollars);

Après avoir ajouté les enregistrements, nous avons récupéré toutes ses données en utilisant l'instruction de sélection avec le caractère '*' dans la requête suivie du nom d'une table de table. Il a affiché les 5 enregistrements.

Recherchons le texte intégral dans les colonnes d'une table de table. Pour cela, nous utilisons l'instruction sélectionnée avec la chaîne correspondante «FTS5» dans la requête. La clause WHERE contient la condition que le tableau de données doit correspondre à la chaîne «FTS5» conformément au mot clé Match. Vous pouvez également remplacer Match par l'opérateur «=». Il s'avère qu'il n'y a pas de chaîne «fts5» dans la table.

Sélectionnez * dans les données où les données correspondent à «FTS5»;
Sélectionnez * dans les données où data = 'fts5';

Donc, nous avons ajouté un nouvel enregistrement dans le tableau qui contient le modèle «FTS5» dans son contenu. Nous avons à nouveau essayé l'insertion dans l'instruction jusqu'à présent. Après avoir affiché une fois de plus les données d'une table de table, nous avons vu que l'enregistrement nouvellement inséré a également été affiché.

Appliquons la recherche en texte complet sur le tableau de données à l'aide de l'instruction SELECT suivie de la correspondance du mot-clé et du modèle de chaîne «FTS5» pour afficher les seuls enregistrements contenant le modèle spécifique. Il affichait un seul enregistrement sur notre écran. La même requête a été exécutée avec l'opérateur «=» au lieu du mot clé Match et il a affiché la même sortie.

Sélectionnez * dans les données où les données correspondent à «FTS5»;
Sélectionnez * dans les données où data = 'fts5';
SELECT * FROM DATA ('FTS5');

Affichons les enregistrements du tableau dans l'ordre le plus à la moins pertinent des enregistrements insérés. Pour cela, nous utiliserons l'option «Rank» dans la requête. Ainsi, nous utilisons la recherche en texte intégral pour rechercher le texte «merveilles» à partir des données de la table via le mot-clé correspondant et la commande par clauses suivant l'option «Rank». Il affichait un seul enregistrement de la table.

Sélectionnez * dans les données où les données correspondent à l'ordre «merveille» par rang;

Une autre façon d'effectuer une recherche en texte intégral consiste à utiliser le motif entre les supports après le nom de la table dans l'instruction SELECT.

SELECT * FROM DATA ('Magic');

Vous pouvez également utiliser la recherche en texte intégral pour rechercher les valeurs du motif de préfixe à partir du contenu de la table. Pour utiliser les préfixes, vous devez ajouter les deux premiers à trois caractères suivis du caractère «*». Cette valeur de préfixe peut être utilisée dans les supports de l'instruction SELECT. Maintenant, l'utilisation de "Ro *" affiche le seul enregistrement du film maléfique dont les informations de description contient le préfixe "RO" pour "Romance".

SELECT * FROM DATA ('RO *');

Vous pouvez également restreindre la recherche d'un modèle à l'autre en utilisant l'opérateur non. Comme nous utilisons le texte magique et non, il a donc affiché deux enregistrements pour le motif magique.

Sélectionnez * à partir des données où les données correspondent à «magie et non de texte»;

Conclusion

Ce guide concerne l'utilisation de la recherche en texte intégral dans la base de données SQLite utilisée dans Ubuntu 20.04. En utilisant FTS5, nous pouvons rechercher un modèle spécifique avec certaines conditions. Cet article détaillé vous aidera à rechercher du texte dans SQLite.