Spotlight
fouf
Membre
Je n'ai rien compris a la doc d'Apple sur Spotlight : j'ecris une appli qui gere du texte et ca serait bien que mon appli soit optimisee pour les recherches dans Tiger avec Spotlight.
Je n'arrive meme pas a savoir s'il faut integrer les methodes d'indexation dans les routines d'enregistrement. :why?:
Aidez-moi
(question subsidiaire : oxitan, yaura-t-il une partie du forum sur Dashboard quand Tiger sortira ?)
Je n'arrive meme pas a savoir s'il faut integrer les methodes d'indexation dans les routines d'enregistrement. :why?:
Aidez-moi
(question subsidiaire : oxitan, yaura-t-il une partie du forum sur Dashboard quand Tiger sortira ?)
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
- dashboard, spotlight
- optimisation 64 bits / Velocity Engine / multi-processeurs
Je pense pas qu'il y ait bcp de programmeurs ici qui se servent du deuxième mais pourquoi pas...
Sinon, problèmes judiciaires en perspective...
(Violation de secret professionnel)
Si c' est le cas, le mieux c' est de regarder dans MDImporter.
Merci quand meme.
J' ai compris le principe général: un daemon qui utilise des plugins (metadata importers ) pour extraire les informations interressantes dans un fichier et les balancer dans une base facile à consulter par la suite.
Mais alors, que veut dire le terme metadata ? Est-ce que c' est un terme abstrait pour désigner "toute info succeptible d' être extraite d' un fichier" ou est-ce que ça désigne des bits du fichier qui contiennent des infos sous forme binaire ?
Et est-ce que spotlight écrit quelque chose dans les fichiers qu' il traite ? (cf les considérations sur la sécurité dans la doc).
Autre question sans réponse:
- Avec les importers on peut extraire des infos pour un fichier entier (date, taille, etc ...).
- On peut aussi faire une recherche plus fine à l' intérieur d' un fichier, comme par exemple les contacts du carnet d' adresse. Spotlight va chercher des éléments à l' interieur de la base d' adresses et permet d' ouvrir dans AdressBook l' adresse sélectionnée dans les résultats.
Je me demande si on pourrait utiliser spotlight de cette façon pour faire des recherches directement dans une base SQL ou dans un fichier xml.
Exemple: on tape un mot dans spotlight et on obtient les occurences dans un dictionnaire ou dans une base quelconque de son cru.
Mais est-ce que c' est PREVU pour cet usage ou seulement pour les recherches simples dans le file system ? Je n' ai pas vu de réponse précise dans la doc Apple.
Voilà qu' est-ce qui "m' interpelle" , comme on dit.
ce sont des infos sur les infos (donc nom d'auteur, légende, album, etc.. pour des données audio ou photo par ex) ou les infos elles-même (cas d'un fichier pdf où tous les mots du fichiers vont finalement se retrouver dans la base spotlight)
non...
pour faire des recherches directement dans une base sql en utilisant spotlight reviendrai plus ou moins à indexer(et donc à copier dans la base spotlight) le contenu de toute la base à chaque fois qu'elle est modifiée (en fait le fichier qui la contient.
pour un fichier xml, le contenu du fichier va se retrouver en entier, indexé dans la base spotlight.
Apple a décidé de ne pas utiliser de metadatas spécifique à un système de fichier. Les metadata de HFS ne sont conservés que pour la compatibilité avec OS 9 et il est déconseillé de les utiliser.
Certaines appli Apple ne définissent même pas le "creator type"Â ???
Le but d'Apple est certainement, le moment venu, de pouvoir changer de système de fichier (et de se débarrasser de Mac OS Classic par la même occasion) en toute liberté ...
Dans l' absolu ça revient à ça. Mais dans la pratique il faut voir comment ça peut se passer. quand on approfondit un peu la doc on voit que chaque importer (qui indexe les données) s' occupe de fichiers bien précis (Doc Type, extension ...). L' argument principal de la fonction qui indexe est un chemin de fichier. Dans le cas d' un fichier xml ça ne pose pas de problème majeur, mais dans le cas d' une base SQL ou autre (domaine que je ne maitrise pas), on ne peut pas donner en argument un serveur avec base et table.
Il faudrait attaquer directement les fichiers et refaire toute l'indexation ... j' imagine mais je n' en sais pas plus ...
Autre question que je lance telle une bouteille à la mer et qui sera récupérée quand des gens auront commencé à approfondir le Spotlight SDK:
Dans l' importer on spécifie les fichiers succeptibles d' être recherchés avec un Document type ou UTI (Universal Type Identifier) hérarchique du genre: com.data.Document.xml .
Un fichier XML, par exemple, appartient au type Document qui appartient au type Data qui appartient au type Item.
Le problème est que certains types sont réservés. Le "Document" est réservé par Apple pour les recherches dans spotlight effectuées avec le critère "document".
Que se passe-t'il si on veut créer un meta data importer qui prenne en compte un Type qui hérite de Document ? Est-ce que les deux critères des deux importer sont pris en compte ?
Est-ce qu'il y a un conflit avec l' importer Apple ? Qui gagne ? (ça je crois savoir)
Voili voilou, de toute façon on y vera plus clair quand tout ça sera sorti et testé.
lors du tiger developer briefing qui a eu lieu fin novembre dernier, on ne parlait pas encore de Universal Type Identifier. cepandant, il a été précisé que lorsque plusieurs importer acceptaient un même fichier, tous étaient appelés, ce qui est utile par ex. si apple fournissait mettons un importer de pdf qui se contente d'indexer le nom de l'auteur, la date de création, la taille du fichier, et qu'un importer de pdf fourni par adobe irait indexer jusqu'au contenu même du document.
Par contre, quand deux importers veulent attribuer deux valeurs différentes à une clé qui n' en accèpte qu' une, ça coince obligatoirement.
A l' usage (parce que rien dans la doc Apple), je dirais que la "priorité" dépend de la précision dans la concordance des UTI .Par exemple un importer qui déclare "public.xml" gagne sur un importer qui déclare "public.document" même si l' UTI "public.xml" hérite de l' UTI "public.document". On dirait aussi qu' en cas de conflit c' est le premier importer à indexer qui gagne.
Tout ça c' est au feeling et ça peut encore changer en théorie ...
Sinon j' ai une grosse déception. Apparemment l' unité de base pour l' indexation est bien le fichier. J ai l' impression que l' on ne peut pas indexer des éléments qui se trouveraient à l' intérieur d' un fichier. Je me demandais comment on pouvait rechercher des contacts d' AdressBook alors que la base d' adresses tient en un fichier dans Panther. En fait, dans Tiger, chaque contact correspond à un ficher. Pareil pour Mail qui traite désormais les messages comme des fichiers, même s' il garde aussi le format mbox.
Finalement pour que Spotlight soit vraiment efficace il ne suffit pas d' un importer adapté au format de document recherché, il faut AUSSI qu' à chaque objet recherché corresponde 1 fichier.
Je ne sais pas si vous avez remarqué, mais quand on recherche un terme dans la barre spotlight et qu' on choisit un PDF, Aperçu ouvre le fichier avec le terme recherché dans son propre textfield de recherche et se place à la première occurence dans le texte.
COMMENT CA MARCHE ?
j' imagine que spotlight envoie à Aperçu une instruction pour lui dire d' ouvrir tel fichier, avec un terme de recherche. Par quel moyen alors ? Apple Events, notification du Finder ?
Je me dis que Spotlight doit passer le terme de recherche en argument lors de l'ouverture du fichier. Dans ce cas, n' importe quelle appli pourrait en tirer profit.
Bien cherché dans la doc sur Spotlight, rien trouvé la dessus.
En tout cas, si effectivement on peut passer la recherche en argument à une appli, ça ouvre des perspectives. Par exemple, on pourrait imaginer une appli qui gère des données dans une base (SQlite par exemple). La base pourrait être exportée sous forme de fichiers où chaque fichier porte le nom d' une entrée. le fichier serait vide, ce qui limite beaucoup l' indexation dans la base spotlight.
Ensuite, quand le fichier est ouvert à travers spotlight, l' appli lance une recherche dans sa base avec le nom du fichier.
Bien sûr, il y aurait des limitations: ça implique une base avec un mode d' interrogation unique. Ca produit aussi plein de petit fichiers sur le disque.
Avantage:
- indexation spotlight réduite (nom du fichier et quelques bricoles de base pour le Finder).
- Indépendant du type de base puisqu' il suffit que l' appli cible puisse l' ouvrir et effectuer une recherche.
Voilà , c' est juste une idée brute comme ça en passant, et si ça se trouve complètement incongrue ou irréalisable.
De toute façon ma question, en dehors de ce projet (improbable ?), c' est cette histoire d' Aperçu qui recherche la requète de Spotlight car ça me trouble fort.
Ca m'a sauté aux yeux aussi, quand j'ai regardé la vidéo !
Je connais pas bien les mécanismes d'ouvertures de fichiers (à part la méthode à implementer dans son applis) mais en voyant cette fonctionnalité, j'ai tout de suite pensé à des tas d'utilisations
J'aimerais bien tester (et eventuellement integrer) spotlight, surtout si il existe des exemples compréhensibles.
Effectivement, dans Tiger les applications peuvent s' ouvrir avec la recherche de spotlight comme argument.
Pour récupérer cet argument au moment de l' ouverture d' un fichier, il faut appeler le Event Manager: