IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SQL Firebird Discussion :

Moteur de recherche dans fichiers


Sujet :

SQL Firebird

  1. #1
    Membre régulier
    Développeur informatique
    Inscrit en
    Décembre 2010
    Messages
    228
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2010
    Messages : 228
    Points : 113
    Points
    113
    Par défaut Moteur de recherche dans fichiers
    Bonjour,

    J'étudie la possibilité de proposer un moteur de recherche dans mon application (FB3 + Delphi Berlin). Je ne sais pas vraiment pas où et comment commencer cet outil. Je ne sais même pas si je peux proposer cet outil (à cause du délai de dev).

    Mon application doit permettre la recherche de mots clefs dans des fichiers (txt ou Word) contenus dans la BDD.

    Lors de l'insertion de ces fichiers, je pense scanner le fichier et indexer tous les mots de ce fichier. Voilà dans l'idée mais dans la pratique je suis perdu :
    - Comment faire l'indexation ? Comment architecturer ma (mes) table contenant la recherche ?
    - Est-il "malin" d'indexer tous les mots des fichiers ?

    Merci pour vos retours.

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 029
    Points : 40 927
    Points
    40 927
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    si j'ai bien compris le fichier est contenu dans un Blob dans la BDD ? disons table FICHIERS(ID BIGINT NOT NULL,CONTENU BLOB SUB_TYPE TEXT)
    pour faire une recherche à l'intérieur d'un blob, depuis FB 2.0 on peut le faire avec CONTAINING
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT ID FROM FICHIERS WHERE CONTENU CONTAINING 'ce que je cherche'
    équivalent de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LIKE '%ce que je cherche%'
    et il y a aussi la fonction SIMILAR TO plus "expression régulière" pour faire des recherches

    bien évidemment ce sera lent.

    D'autres se sont déjà posé la question ici ou là, cette faq http://www.firebirdfaq.org/faq328/ peut, peut-être, t'aider

    je te conseille de lire le papier de la conférence (dernier lien de cette FAQ) qui est même proposé avec un exe+source D7
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  3. #3
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 378
    Points : 19 054
    Points
    19 054
    Par défaut
    Salut à tous.

    Sous MySql, nous avons le "Full Text Search" qui permet d'indexer tous les mots contenues dans plusieurs colonnes.
    C'est bien plus rapide que le classique "like", qui lui indexe la chaîne de caractères.
    Sauf que j'ignore totalement si cette approche existe aujourd'hui dans FireBird.
    Et faire un traitement pour récolter tous les mots n'est pas aussi facile à faire que cela.
    Ce qui nécessite à chaque modification d'une colonne de recréer l'index.

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  4. #4
    Membre régulier
    Développeur informatique
    Inscrit en
    Décembre 2010
    Messages
    228
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2010
    Messages : 228
    Points : 113
    Points
    113
    Par défaut
    Salut,

    Merci pour vos réponses.

    si j'ai bien compris le fichier est contenu dans un Blob dans la BDD ? disons table FICHIERS(ID BIGINT NOT NULL,CONTENU BLOB SUB_TYPE TEXT)
    Pour l'instant rien n'a été développé (phase d'étude) mais cela devrait ressemblait à ta description.

    D'autres se sont déjà posé la question ici ou là, cette faq http://www.firebirdfaq.org/faq328/ peut, peut-être, t'aider
    je te conseille de lire le papier de la conférence (dernier lien de cette FAQ) qui est même proposé avec un exe+source D7
    En parcourant ces liens, il existe des solutions dont Sphinx qui semble être la plus puissante et la plus à jour. Je vais étudier cette solution.

    Sous MySql, nous avons le "Full Text Search" qui permet d'indexer tous les mots contenues dans plusieurs colonnes.
    Sais-tu si cette fonctionnalité est performante? Pas prévu de passer sous MySql pour ce projet mais je suis curieux.

    Merci

  5. #5
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 378
    Points : 19 054
    Points
    19 054
    Par défaut
    Salut lefju cabro.

    Citation Envoyé par lefju cabro
    Sais-tu si cette fonctionnalité est performante? Pas prévu de passer sous MySql pour ce projet mais je suis curieux.
    Je ne te conseille pas de passer sous MySql. J'aime bien FireBird qui a quelques fonctionnalités en plus que ne possède pas MySql.
    Mais bon, il y a aussi des manques qui peuvent être contournés.

    Pour le FTS sous MySql, pour l'avoir utilisé, oui c'est performant par rapport au classique "like".
    Le passage disons du "like" au FTS, consiste a découper mot par mot un texte et ensuite d'indexer chaque mot.
    L'index FTS n'est pas un index classique et nécessite donc des fonctionnalités que ne possède pas aujourd'hui FireBird.

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  6. #6
    Membre régulier
    Développeur informatique
    Inscrit en
    Décembre 2010
    Messages
    228
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2010
    Messages : 228
    Points : 113
    Points
    113
    Par défaut Recherche fichier Word
    Bonjour,

    Des outils comme Sphinx permettent du "Full Text Search" mais uniquement pour les fichiers textes.

    Existe-t-il une méthode pour faire une recherche de mots clefs dans des BLOB contenant des fichiers Word ? Faut-il passer par l'indexation des mots du fichier Word lors de l'import de celui-ci dans la base ? Si oui ça se fait facilement ?

    Merci

    Lefju

  7. #7
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 378
    Points : 19 054
    Points
    19 054
    Par défaut
    Salut lefju cabro.

    Citation Envoyé par lefju cabro
    Existe-t-il une méthode pour faire une recherche de mots clefs dans des BLOB contenant des fichiers Word ?
    Le BLOB (= binary large object) est une structure binaire.
    Cela sert pour mettre des images, entre autre.
    Pourquoi mettre du texte dans une structure binaire ?
    Utilisez plutôt les types "varchar" ou "text".

    Citation Envoyé par lefju cabro
    Faut-il passer par l'indexation des mots du fichier Word lors de l'import de celui-ci dans la base ?
    Normalement, vous devez définir des colonnes contenant vos textes.
    Vous ne devez pas faire de découpage car c'est l'index de type FTS qui va réaliser ce travail.
    La déclarative FTS va se faire sur les colonnes que vous désirez indexer.
    Tout ce que vous avez à faire, c'est déclarer la requête qui va effectuer la recherche de vos mots.

    Citation Envoyé par lefju cabro
    Si oui ça se fait facilement ?
    Sous FireBird, je ne sais pas répondre à cela car je ne l'ai jamais utilisé.
    Sous MySql, c'est assez simple à mettre en oeuvre.

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  8. #8
    Membre régulier
    Développeur informatique
    Inscrit en
    Décembre 2010
    Messages
    228
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2010
    Messages : 228
    Points : 113
    Points
    113
    Par défaut
    Salut Artemus24,

    Merci pour ton message.

    Le BLOB (= binary large object) est une structure binaire.
    Cela sert pour mettre des images, entre autre.
    Pourquoi mettre du texte dans une structure binaire ?
    Utilisez plutôt les types "varchar" ou "text".
    J'utilise les BLOB pour insérer des fichiers texte (*.txt). J'aimerai également y insérer des fichiers Word (*.docx).


    Normalement, vous devez définir des colonnes contenant vos textes.
    Vous ne devez pas faire de découpage car c'est l'index de type FTS qui va réaliser ce travail.
    La déclarative FTS va se faire sur les colonnes que vous désirez indexer.
    Tout ce que vous avez à faire, c'est déclarer la requête qui va effectuer la recherche de vos mots.
    Sauf erreur de ma part les outils FTS comme Sphinx fonctionne uniquement sur de la donnée texte; donc pas possible sur des fichiers Word.

    Pour contourner cela je stocke mes fichiers Word au format xml (ou html) dans la base comme cela le FTS pourra effectuer des recherches.

    A+

    Lefju

  9. #9
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 029
    Points : 40 927
    Points
    40 927
    Billets dans le blog
    62
    Par défaut
    Bonjour,
    Citation Envoyé par lefju cabro Voir le message
    J'utilise les BLOB pour insérer des fichiers texte (*.txt). J'aimerai également y insérer des fichiers Word (*.docx).
    Pour contourner cela je stocke mes fichiers Word au format xml (ou html) dans la base comme cela le FTS pourra effectuer des recherches.
    Je vais peut être dire une bêtise mais il me semble que docx est un fichier au format xml. Si Sphinx fonctionne sur un XML alors pas de soucis

    Sauf erreur de ma part les outils FTS comme Sphinx fonctionne uniquement sur de la donnée texte
    de la donnée texte c.a.d. un BLOB de SUB TYPE TEXT, AMHA pour un .docx cela ne devrait pas poser de problème, du moins c'est ainsi que je le comprend.

    Citation Envoyé par Artemus24
    Le BLOB (= binary large object) est une structure binaire.
    Cela sert pour mettre des images, entre autre.
    Pourquoi mettre du texte dans une structure binaire ?
    Firebird (et Interbase) distingue deux types de BLOB : les binaires mais aussi les Blobs text, à la différence d'une colonne VARCHAR de taille limitée le "firebird blob sub_type text" est un bon moyen de stocker des fichiers texte, html, xml ... en bref tous les fichiers pouvant être ouvert par un éditeur de texte standard
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  10. #10
    Membre régulier
    Développeur informatique
    Inscrit en
    Décembre 2010
    Messages
    228
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2010
    Messages : 228
    Points : 113
    Points
    113
    Par défaut
    Bonjour SergioMaster,

    Je vais peut être dire une bêtise mais il me semble que docx est un fichier au format xml. Si Sphinx fonctionne sur un XML alors pas de soucis
    Je n'utilise pas (encore) Sphinx mais effectivement il fonctionne sur le XML. Mais je pense que mon fichier DOCX inséré dans mon BLOB est binaire donc Sphinx ne pourra pas le traiter. Ca tient la route ce que je raconte ?

    Sauf erreur de ma part les outils FTS comme Sphinx fonctionne uniquement sur de la donnée texte
    de la donnée texte c.a.d. un BLOB de SUB TYPE TEXT, AMHA pour un .docx cela ne devrait pas poser de problème, du moins c'est ainsi que je le comprend.
    Dans ma bdd j'ai inséré des fichiers docx dans des blobs binaire mais une requête simple sur ce blob (select * from fiche_client where binary_2 CONTAINING 'test1') me retourne vide. Je ne sais pas si Sphinx fera mieux.
    J'ai le même résultat avec des blob subtext.


    Firebird (et Interbase) distingue deux types de BLOB : les binaires mais aussi les Blobs text, à la différence d'une colonne VARCHAR de taille limitée le "firebird blob sub_type text" est un bon moyen de stocker des fichiers texte, html, xml ... en bref tous les fichiers pouvant être ouvert par un éditeur de texte standard
    Actuellement j'utilise certainement des BLOB Binaire (définition dans la table: monChamps BLOB) et non pas Texte, cela serait mieux dans mon cas

    Des infos sur les différentes type de BLOB sous FB ici.

  11. #11
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 029
    Points : 40 927
    Points
    40 927
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    méa culpa, docx est un format propriétaire Microsoft OpenXML (ils sont gonflés d'utiliser le mot Open !) en fait un XML mais compressé !
    Du coup cela implique un blob binaire effectivement !

    Mais sachant cela il doit être possible de créer une UDF permettant d'analyser le contenu de document.xml de ce docx.
    (je me suis "amusé" à ouvrir un docx avec 7z pour découvrir cela)

    A mon avis c'est réalisable
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  12. #12
    Membre régulier
    Développeur informatique
    Inscrit en
    Décembre 2010
    Messages
    228
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2010
    Messages : 228
    Points : 113
    Points
    113
    Par défaut
    (ils sont gonflés d'utiliser le mot Open !)
    Ils ont peur de rien chez MS

    Mais sachant cela il doit être possible de créer une UDF permettant d'analyser le contenu de document.xml de ce docx.
    Ta solution semble être mieux que la mienne qui était de stocker le fichier au format XML ou HMTL (du texte) pour que Sphinx fasse sa recherche à l'intérieur.

    Merci

  13. #13
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 029
    Points : 40 927
    Points
    40 927
    Billets dans le blog
    62
    Par défaut
    Une pincée de dézippage et une autre d'expression régulière, l'UDF doit être réalisable (du moins me semble t-elle possible avec RAD STUDIO)
    il faut juste éliminer toutes les mises en formes de la recherche


    par exemple, voici un extrait d'un document (en anglais)
    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <w:document xmlns:ve="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:m="http://schemas.openxmlformats.org/officeDocument/2006/math" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:wp="http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing" xmlns:w10="urn:schemas-microsoft-com:office:word" xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" xmlns:wne="http://schemas.microsoft.com/office/word/2006/wordml"><w:body><w:p w:rsidR="00332BA2" w:rsidRDefault="00B63EA6" w:rsidP="00217028"><w:pPr><w:pStyle w:val="Title"/><w:outlineLvl w:val="0"/></w:pPr><w:bookmarkStart w:id="0" w:name="OLE_LINK1"/><w:bookmarkStart w:id="1" w:name="OLE_LINK2"/><w:bookmarkStart w:id="2" w:name="_Toc359077851"/><w:r><w:t>Demonstration of DOCX support in calibre</w:t></w:r><w:bookmarkEnd w:id="2"/></w:p><w:bookmarkEnd w:id="0"/><w:bookmarkEnd w:id="1"/><w:p w:rsidR="00B63EA6" w:rsidRDefault="00B63EA6" w:rsidP="00230C50"><w:r><w:t>This document demonstrates the ability of the calibre DOCX Input plugin to convert the various typographic features in a Microsoft Word (2007 and newer) document. Convert this document to a modern ebook format, such as AZW3 for Kindles or EPUB for other ebook readers, to see it in action.</w:t></w:r></w:p><w:p w:rsidR="00A406DC" w:rsidRDefault="00A406DC" w:rsidP="00230C50"><w:r><w:t xml:space="preserve">There is support for images, tables, lists, footnotes, endnotes, </w:t></w:r><w:r w:rsidR="006E0607"><w:t xml:space="preserve">links, dropcaps and </w:t></w:r><w:r w:rsidR="00517777"><w:t>various</w:t></w:r><w:r><w:t xml:space="preserve"> types of text and paragraph level formatting.</w:t></w:r></w:p><w:p w:rsidR="00565820" w:rsidRPr="00565820" w:rsidRDefault="00565820" w:rsidP="00230C50"><w:r><w:t xml:space="preserve">To see the DOCX conversion in action, simply add this file to calibre using the </w:t></w:r><w:r><w:rPr><w:b/></w:rPr><w:t xml:space="preserve">“Add Books” </w:t></w:r><w:r><w:t>button and then click “</w:t></w:r><w:r><w:rPr><w:b/></w:rPr><w:t xml:space="preserve">Convert”. </w:t></w:r><w:r><w:t xml:space="preserve"> Set the output format in the top right corner of the conversion dialog to EPUB or AZW3 and click </w:t></w:r><w:r><w:rPr><w:b/></w:rPr><w:t>“OK”</w:t></w:r><w:r><w:t>.</w:t></w:r></w:p><w:p w:rsidR="00386659" w:rsidRDefault="00386659" w:rsidP="00230C50"/><w:p w:rsidR="00386659" w:rsidRDefault="00386659" w:rsidP="00386659"><w:pPr><w:pStyle w:val="Heading1"/></w:pPr><w:bookmarkStart w:id="3" w:name="_Toc359077852"/><w:r><w:t>Text Formatting</w:t></w:r><w:bookmarkEnd w:id="3"/></w:p><w:p w:rsidR="00386659" w:rsidRDefault="00753CF0" w:rsidP="00753CF0"><w:pPr><w:pStyle w:val="Heading2"/></w:pPr><w:bookmarkStart w:id="4" w:name="_Toc359077853"/><w:r><w:t>Inline formatting</w:t></w:r><w:bookmarkEnd w:id="4"/></w:p><w:p w:rsidR="00386659" w:rsidRDefault="00386659" w:rsidP="00386659"><w:r><w:t>Here, we demonstrate various types of inline text formatting and the use of embedded fonts.</w:t></w:r></w:p><w:p w:rsidR="00A65B8B" w:rsidRDefault="00386659" w:rsidP="00386659"><w:r><w:t xml:space="preserve">Here is some </w:t></w:r><w:r><w:rPr><w:b/></w:rPr><w:t xml:space="preserve">bold, </w:t></w:r><w:r><w:rPr><w:i/></w:rPr><w:t xml:space="preserve">italic, </w:t></w:r><w:r><w:rPr><w:b/><w:i/></w:rPr><w:t xml:space="preserve">bold-italic, </w:t></w:r><w:r><w:rPr><w:u w:val="single"/></w:rPr><w:t xml:space="preserve">underlined </w:t></w:r><w:r w:rsidRPr="00386659"><w:t xml:space="preserve">and </w:t></w:r><w:r><w:rPr><w:strike/></w:rPr><w:t xml:space="preserve">struck out </w:t></w:r><w:r><w:t xml:space="preserve"> text. Then, we have a super</w:t></w:r><w:r><w:rPr><w:vertAlign w:val="superscript"/></w:rPr><w:t>script</w:t></w:r><w:r><w:t xml:space="preserve"> and a sub</w:t></w:r><w:r><w:rPr><w:vertAlign w:val="subscript"/></w:rPr><w:t>script</w:t></w:r><w:r><w:t xml:space="preserve">. Now we see some </w:t></w:r><w:r><w:rPr><w:color w:val="FF0000"/></w:rPr><w:t>red</w:t></w:r><w:r><w:t xml:space="preserve">, </w:t></w:r><w:r><w:rPr><w:color w:val="92D050"/></w:rPr><w:t>green</w:t></w:r><w:r><w:t xml:space="preserve"> and </w:t></w:r><w:r><w:rPr><w:color w:val="0070C0"/></w:rPr><w:t>blue</w:t></w:r><w:r><w:t xml:space="preserve"> text. Some text with a </w:t></w:r><w:r w:rsidRPr="00386659"><w:rPr><w:highlight w:val="yellow"/></w:rPr><w:t>yellow highlight</w:t></w:r><w:r><w:t>. Some text in a</w:t></w:r><w:r w:rsidR="00A52AAF"><w:t xml:space="preserve"> </w:t></w:r><w:r w:rsidRPr="00386659"><w:rPr><w:bdr w:val="single" w:sz="4" w:space="0" w:color="auto"/></w:rPr><w:t>box</w:t></w:r><w:r w:rsidR="00145654"><w:t>. Some text</w:t></w:r><w:r><w:t xml:space="preserve"> in </w:t></w:r><w:r w:rsidRPr="00386659"><w:rPr><w:color w:val="FFFFFF" w:themeColor="background1"/><w:shd w:val="clear" w:color="auto" w:fill="000000" w:themeFill="text1"/></w:rPr><w:t>inverse video</w:t></w:r><w:r><w:t>.</w:t></w:r></w:p><w:p w:rsidR="00A65B8B" w:rsidRDefault="00A65B8B" w:rsidP="00A65B8B"><w:r><w:t xml:space="preserve">A paragraph with styled text: </w:t></w:r><w:r w:rsidRPr="00A65B8B"><w:rPr><w:rStyle w:val="SubtleEmphasis"/></w:rPr><w:t>subtle emphasis</w:t></w:r><w:r><w:rPr><w:rStyle w:val="SubtleEmphasis"/></w:rPr><w:t xml:space="preserve"> </w:t></w:r><w:r w:rsidRPr="00A65B8B"><w:t>f</w:t></w:r><w:r><w:t xml:space="preserve">ollowed by </w:t></w:r><w:r><w:rPr><w:rStyle w:val="Strong"/></w:rPr><w:t xml:space="preserve">strong text </w:t></w:r><w:r w:rsidRPr="00A65B8B"><w:t>a</w:t></w:r><w:r><w:t xml:space="preserve">nd </w:t></w:r><w:r><w:rPr><w:rStyle w:val="IntenseEmphasis"/></w:rPr><w:t>intense emphasis</w:t></w:r><w:r w:rsidRPr="00A65B8B"><w:t>.</w:t></w:r><w:r><w:t xml:space="preserve"> This paragraph uses document wide styles for styling rather than inline text properties as demonstrated in the previous paragraph</w:t></w:r><w:r w:rsidR="007752F6"><w:t xml:space="preserve"> — </w:t></w:r><w:r><w:t>calibre can handle both with equal ease.</w:t></w:r></w:p><w:p w:rsidR="00025E62" w:rsidRDefault="00025E62" w:rsidP="00025E62"><w:pPr><w:pStyle w:val="Heading2"/></w:pPr><w:bookmarkStart w:id="5" w:name="_Toc359077854"/><w:r><w:t>Fun with fonts</w:t></w:r><w:bookmarkEnd w:id="5"/></w:p><w:p w:rsidR="00F53871" w:rsidRDefault="00F53871" w:rsidP="00A65B8B"><w:r><w:t xml:space="preserve">This document has embedded the Ubuntu font family. The body text is in the Ubuntu typeface, here is </w:t></w:r><w:r w:rsidRPr="00F53871"><w:rPr><w:rFonts w:ascii="Ubuntu Mono" w:hAnsi="Ubuntu Mono"/></w:rPr><w:t>some text in the Ubuntu Mono typeface</w:t></w:r><w:r w:rsidR="003304EF"><w:rPr><w:rFonts w:ascii="Ubuntu Mono" w:hAnsi="Ubuntu Mono"/></w:rPr><w:t>, notice how every letter has the same width, even i and m</w:t></w:r><w:r><w:t>. Every embedded font will automatically be embedded in the output ebook during conversion.</w:t></w:r><w:r w:rsidR="00BA7C2B"><w:t xml:space="preserve"> </w:t></w:r></w:p><w:p w:rsidR="001D582F" w:rsidRDefault="001D582F" w:rsidP="001D582F"><w:pPr><w:pStyle w:val="Heading2"/><w:rPr><w:rStyle w:val="IntenseEmphasis"/><w:b/><w:bCs/><w:i w:val="0"/><w:iCs w:val="0"/></w:rPr></w:pPr><w:bookmarkStart w:id="6" w:name="_Paragraph_level_formatting"/><w:bookmarkStart w:id="7" w:name="_Toc359077855"/><w:bookmarkEnd w:id="6"/><w:r><w:rPr><w:rStyle w:val="IntenseEmphasis"/><w:b/><w:bCs/><w:i w:val="0"/><w:iCs w:val="0"/></w:rPr><w:t>Paragraph level formatting</w:t></w:r><w:bookmarkEnd w:id="7"/></w:p><w:p w:rsidR="001D582F" w:rsidRDefault="001D582F" w:rsidP="001D582F"><w:pPr><w:pBdr><w:right w:val="single" w:sz="4" w:space="4" w:color="auto"/></w:pBdr><w:shd w:val="clear" w:color="auto" w:fill="DDDDDD"/><w:jc w:val="right"/></w:pPr><w:r><w:t>You can do crazy things with paragraphs, if the urge strikes you. For instance this paragraph is right aligned and has a right border. It has also been given a light gray background.</w:t></w:r></w:p><w:p w:rsidR="00A46055" w:rsidRDefault="00A46055" w:rsidP="00A46055"><w:pPr><w:spacing w:before="600"/><w:ind w:left="720" w:hanging="720"/></w:pPr><w:r><w:t>For the lovers of poetry amongst you, paragraphs with hanging indents, like this often come in handy. You can use hanging indents to ensure that a line of poetry retains its individual identity as a line even when the screen is too narrow to display it as a single line. Not only does this paragraph have a hanging indent, it is also has an extra top margin, setting it apart from the preceding paragraph.</w:t></w:r></w:p><w:p w:rsidR="00297ABF" w:rsidRDefault="00297ABF" w:rsidP="00297ABF"><w:pPr><w:pStyle w:val="Heading1"/></w:pPr><w:bookmarkStart w:id="8" w:name="_Toc359077856"/><w:r><w:t>Tables</w:t></w:r><w:bookmarkEnd w:id="8"/></w:p><w:tbl><w:tblPr><w:tblStyle w:val="LightList-Accent3"/><w:tblpPr w:rightFromText="187" w:bottomFromText="72" w:vertAnchor="text" w:tblpY="1"/><w:tblOverlap w:val="never"/><w:tblW w:w="0" w:type="auto"/><w:tblLook w:val="0620"/></w:tblPr><w:tblGrid><w:gridCol w:w="1818"/><w:gridCol w:w="1620"/></w:tblGrid><w:tr w:rsidR="00297ABF" w:rsidTr="00B86920"><w:trPr>
    j'ai remarqué que le texte était le plus souvent entre des balises <w:t> </w:t>
    donc l'expression régulière pourrait en tenir compte

    pseudo code (expression régulière erronée et incomplète)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    rechercher='image'
    expression='(?:<w:t>)|(?:<w:t/s.*).*\s'+rechercher+'\s.*</w:t>'
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  14. #14
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 759
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 759
    Points : 52 538
    Points
    52 538
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    Bonjour,

    méa culpa, docx est un format propriétaire Microsoft OpenXML (ils sont gonflés d'utiliser le mot Open !)
    Ils sont pas gonflé puisqu'ils proposent à tous de pouvoir utiliser ce format librement !

    en fait un XML mais compressé !
    Du coup cela implique un blob binaire effectivement !

    Mais sachant cela il doit être possible de créer une UDF permettant d'analyser le contenu de document.xml de ce docx.
    (je me suis "amusé" à ouvrir un docx avec 7z pour découvrir cela)

    A mon avis c'est réalisable
    le problème est qu'entre les balises ce n'est pas toujours le texte de l'utilisateur :
    1) il y a des méta tags (utilisateur système, date de création, révision...
    2) il y a des informations internes pour l'usage du moteur WORD
    3) enfin, le texte de l'utilisateur.
    Donc cela entrainerait des faux positifs.

    Pour pouvoir indexer le texte que l'utilisateur y a mis, et uniquement cela, il faut passer par des bibliothèques d'extraction de texte appelées "ifilter".

    Seuls quels moteurs savent utiliser ces ifilter, comme c'est le cas de Microsoft SQL Server qui intègre cela en natif, même dans sa version gratuite (SQL Server Express with Advanced Services). Voici la liste des fichiers supportés en standard (v 2016) :
    .ascx
    .asm
    .asp
    .aspx
    .bat
    .c
    .cmd
    .cpp
    .cxx
    .def
    .dic
    .doc
    .dot
    .h
    .hhc
    .hpp
    .htm
    .html
    .htw
    .htx
    .hxx
    .ibq
    .idl
    .inc
    .inf
    .ini
    .inx
    .js
    .log
    .m3u
    .mht
    .obd
    .obt
    .odc
    .pl
    .pot
    .ppt
    .rc
    .reg
    .rtf
    .stm
    .txt
    .url
    .vbs
    .wtx
    .xlb
    .xlc
    .xls
    .xlt
    .xml

    Lisez l'article que j'ai écrit au sujet de l'indexation textuelle à la norme SQL: https://blog.developpez.com/sqlpro/p...text_search_no

    Pour intégrer une recherche avec synonymes (chat => matou) ou expansions (RATP => Régie Autonome des Transports Parisiens) il vous faut en sus définir des thésaurus. Cela aussi est intégré en natif dans SQL Server

    Si vous désirez en sus faire des recherches sur les méta tags des fichiers électroniques c'est possible avec SQL Server : https://docs.microsoft.com/fr-fr/sql...property-lists

    Enfin, si vous désirez faire de la recherche sémantique, vous pouvez aussi utiliser SQL Server, mais là il faut la version payante !
    https://docs.microsoft.com/fr-fr/sql...rch-sql-server

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  15. #15
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 029
    Points : 40 927
    Points
    40 927
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    @SQLPro en fait j'étais étonné de ne pas avoir lu d'intervention de votre part avant !
    je préfère nettement votre papier http://sqlpro.developpez.com/cours/indextextuelle/
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  16. #16
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 759
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 759
    Points : 52 538
    Points
    52 538
    Billets dans le blog
    5
    Par défaut
    Oui, sauf que cet article date de 2004 et qu'on est en 2017... soit 13 ans... Entre les deux il y a eut de nombreuses améliorations de part et d'autres... En 2004 le FTS de MS via SQL Server n'était pas encore abouti. Il a commencé de l'être avec la version 2005 et a été bien amélioré en 2008 (intégration totale au moteur SQL + FILESTREAM pour les fichiers électroniques) et en 2012 avec l'adjonction de semantic search et de la recherches des méta tags des fichiers électroniques.
    La plupart des moteurs de recherches, comme Sphinx ne sont pas capable de faire tout cela.

    Pour info, même l'édition gratuite SQL Server Express (with Advanced Services) permet de faire tout cela sauf la recherche sémantique.

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  17. #17
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 759
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 759
    Points : 52 538
    Points
    52 538
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    Une pincée de dézippage et une autre d'expression régulière, l'UDF doit être réalisable (du moins me semble t-elle possible avec RAD STUDIO)
    il faut juste éliminer toutes les mises en formes de la recherche

    ...

    pseudo code (expression régulière erronée et incomplète)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    rechercher='image'
    expression='(?:<w:t>)|(?:<w:t/s.*).*\s'+rechercher+'\s.*</w:t>'
    Je t'explique pas les temps de réponse avec dézippage et expression régulière...

    Pour info dans SQL Server l'indexation textuelle d'un document XML de 20 Mo n'est pas mesurable en temps de traitement...

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  18. #18
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 029
    Points : 40 927
    Points
    40 927
    Billets dans le blog
    62
    Par défaut
    Bonjour,
    Citation Envoyé par SQLpro Voir le message
    Je t'explique pas les temps de réponse avec dézippage et expression régulière...
    je n'ai pas écrit que c'était l'idéal avec des temps de traitement hyper rapides !
    Pour info dans SQL Server l'indexation textuelle d'un document XML de 20 Mo n'est pas mesurable en temps de traitement...
    je note qu'il n'y a pas le .docx dans la liste (celui qui nécessite justement le dézippage) mais c'est peut être un oubli ?
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  19. #19
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 759
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 759
    Points : 52 538
    Points
    52 538
    Billets dans le blog
    5
    Par défaut
    Pas du tout. .docx => Microsoft Filter Pack 2.0.

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

Discussions similaires

  1. [JSP/SERVLET] Moteur de recherche dans fichiers PDF
    Par crewstyle dans le forum Servlets/JSP
    Réponses: 8
    Dernier message: 27/04/2007, 16h18
  2. Moteur de recherche dans PDF
    Par jhice dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 09/05/2006, 14h58
  3. recherche dans fichier xml
    Par piro dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 24/03/2006, 08h11
  4. Réponses: 4
    Dernier message: 28/10/2005, 09h59
  5. Recherche dans fichiers
    Par Tchinkatchuk dans le forum Linux
    Réponses: 2
    Dernier message: 17/06/2005, 10h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo