Lecture d'index Lucène sur iPad

Bonjour


 


Dans le cadre de mon stage je dois réaliser une application iPad qui comporte plusieurs fonctionnalités. Mais malheureusement je bloque sur la dernière qui est une fonction de recherche full-text.


 


L'application reçoit des fichiers d'indexes au format Lucène.


Celui-ci étant à  l'origine une application en java fait par apache (http://lucene.apache.org/core/) je ne peut pas me servir de la librairie qui est utilisée pour la création des fichiers.


 


Il y a plusieurs projets qui ont été réalisés pour porter cette librairie en C, C++ et IOS qui sont :


- lucy par apache (http://lucy.apache.org) en C


- Clucene  (http://http://sourceforge.net/projects/clucene/files/clucene-core-stable/0.9.21b/) en C++


- Lucene++ (https://github.com/luceneplusplus/LucenePlusPlus) en C++


-  S4LuceneLibrary (https://github.com/mikekppp/S4LuceneLibrary) en IOS


 


Je n'arrive pas à  créer les librairies statics pour ces différents frameworks, ni même à  les installer pour m'en servir dans mon projet.


 


Pour S4Lucene la méthode à  suivre est expliquée étape par étape mais je ne vois pas se qu'il faut faire exactement, ni même comment le faire. J'ai compris qu'il fallait créer une autre librairie avec le projet S4iOSLib (https://github.com/mikekppp/S4iOSLibraries). Je n'arrive pas a obtenir le résultat qui est décrit lors de la génération de la première librairie.


 


 


Quelqu'un a t'il déjà  réussi à  utiliser ces librairies pour utiliser des indexes Lucène? Ou bien une autre piste pour utiliser mes fichiers d'indexes ?


Sachant que leurs utilisations a pour but de réaliser une recherche full-text grâce à  un système de requête proposé par Lucène.


 


Merci à  ceux qui essayeront d'éclairer ma lanterne.


Réponses

  • LarmeLarme Membre

    Peut-être que ceci pourrait t'aider ;)




  • Peut-être que ceci pourrait t'aider ;)




     


    Effectivement vu que j'ai réussi à  créer mes libs pour S4LuceneLibrary grâce aux explication 


    Je vais aussi tenter le coup de faire des workspaces ça à  l'air pas mal pour ranger les différentes parties.


     


    Le problème se résume assez simplement par une ligne de la doc Apple, qui a été cité.


    " If your library target has a “Copy Headers” build phase, you should delete it; copy headers build phases do not work correctly with static library targets when performing the “Archive” action in Xcode. "


     


    Il y avait aussi un autre détail, des scripts étaient lancé pour justement trier les header dans différents dossier mais le path n'était plus bon vue que j'ai copié le projet de github.


     


     


    Pour les autres librairies c'est plus un problème avec Cmake. Quand j'essaye de créer mon projet Xcode j'ai pas mal de message d'erreur. On me dit qu'il faut installer libboost, d'utiliser waf, etc ... Enfin plein de truc compliqués dont je connais pas.


    Au pire je peux toujours créer une librairie en copiant les sources.


     


     


    Au final, je vais déjà  essayer d'utiliser ma lib S4LuceneLibrary et voir si elle me permet de faire ce que je veux.

  • Bonjour à  tous,


     


    Je viens faire un compte rendu de comment je m'en suis sortie pour cette histoire d'indexes Lucène.


    J'avais fait une pause pour avancer sur d'autre partie et surtout arrêter de me prendre la tête avec ça pour mieux repartir.


     


    Finalement la seule librairie dont j'ai réussi à  me servir c'était S4LuceneLibrary en IOS. Malheureusement elle est assez ancienne et permet de n'utiliser que la version 1 de Lucène (actuellement on est à  la 4). Il y a donc beaucoup moins de possibilités, ce qui était assez gênant.


     


    Pour les autres librairies je n'ai pas réussi à  m'en servir. Celle ou j'ai le plus insisté reste Clucene. Le problème venait que pour la génération de ma librairie il fallait en importer une autre, qui elle en demandait une autre, ... 


     


    Pour ce qui est de la solution, je suis parti sur une autre méthode. Dans les grandes lignes :


    Je récupére le contenue de mes indexes lucènes et je les écrire dans un fichier Json. Comme je fais ça en dehors de l'application je n'ai aucun problème vu que je peux coder en Java et utiliser Lucène sans aucun soucis.


    Le fichier Json correspond à  un NSdictionnary ou chaque contenu possède sa clef unique. 


    J'ai également rajouté un pseudo critère de pertinence qui compte le nombre d'occurrence du ou des mot(s) recherchés.


     


    En terme de performance je suis plutôt satisfait. J'ai testé avec le contenue de 5 000 - 7 000 pages html  et la recherche prend au maximum 0.8 - 0.9 sec. Pour une recherche avec un seul mot le temps est de 0.2-0.3 sec environ.


     


    En définitif, j'ai un peu contourné le problème mais vu que ça marche bien et que le temps de recherche n'est pas monstrueux, je vais garder cette solution.


  • CéroceCéroce Membre, Modérateur

    Merci d'être revenu nous faire part de ton avancement   .


Connectez-vous ou Inscrivez-vous pour répondre.