2008-09-18 7 views
2

Je suis à la recherche d'une bibliothèque d'indexation de recherche open source. Il sera utilisé pour les applications web embarquées donc il devrait avoir une petite taille de code. De préférence, écrit en C, C++ ou PHP et ne nécessite aucune base de données à installer pour stocker des index. Les index doivent être stockés sur un fichier à la place (par exemple, xml, txt). J'ai essayé de regarder certaines bibliothèques de recherche célèbres telles que xapian et clucene, elles sont bonnes mais ont une taille de code relativement grande pour un système embarqué.Lightweight Search Indexing API/Lbrary

Ceci sera exécuté sur une plate-forme Linux et sera utilisé pour indexer les fichiers HTML.

Des idées sur ce que serait une bonne bibliothèque de recherche/API à utiliser?

Merci.

+0

PHP? Intégré? Vraiment? Pas la première langue à laquelle je pense quand quelqu'un dit "embarqué" .... –

+0

Sur quelle plate-forme votre code s'exécute (UNIX, Windows Mobile, Palm OS, iPhone OS, ...)? Quel type de données indexez-vous (gros blocs de textes, liste de noms, ...)? – benzado

Répondre

0

Premièrement: vous devez stocker des index quelque part. Donc, un fichier de données sera nécessaire, sauf si vous voulez des index de mémoire seulement.

Pour indexer des articles génériques, je peux vous recommander sqlite: http://www.sqlite.org/. Je l'utilise même en mode mémoire seulement quand j'ai un tas de données et que j'ai besoin de le gérer avec plusieurs index.

2

Oh, mec. Il y en a quelques-uns. Pour l'obscurité descendante ...

Je suis bien sûr qu'il y a une tonne de plus là-bas, mais ce sont ceux que j'ai en haut de m y tête. Bonne chance :)

+0

+1 pour Ferret. C'est comme Lucene, mais écrit en C (avec une interface ruby) et beaucoup plus vite. – zenazn

0

Cela dépend de vos besoins. Une distribution complète de Lucene (Java) est jusqu'à 3 Mo fichier JAR, mais en pratique, peut être réduit à moins de 1 Mo. CLucene est probablement considérablement plus petit en pratique. À quelle vitesse devez-vous aller? ...

+0

Nous avons écarté Lucene parce que nous ne pouvions pas avoir JRE sur notre système. Quand je regarde CLucene, c'est environ 20Mo, même si ça peut encore être effacé. c'est extrêmement important pour notre système. Je pense qu'on peut aller jusqu'à 2MB, au maximum. –

+0

Dans ce cas, je crains de ne pas avoir de recommandation pour vous, mais je vous suggère d'ajouter cette information à votre question pour référence future. –

0

Swish-E est écrit en C et pourrait faire ce que vous voulez. Ne nécessite pas de base de données, utilise son propre format de fichier d'index binaire.

J'ai aussi utilisé ht://Dig mais il semble que ça fait longtemps que ce logiciel a été maintenu.

Les deux compileront sur Linux et index HTML très bien. Une troisième option est SINO utilisée par AustLII. Contactez l'équipe pour vous assurer d'obtenir la dernière version. Devrait compiler sur Linux sans trop de problèmes. Ce n'est pas vraiment conçu pour les systèmes embarqués (SINO signifie Size Is No Object) mais j'avais une API correcte dessus et relativement petite (donc, ce n'est pas fait pour ça mais ça marche aussi bien). Ciblé au format HTML. Indexation assez rapide. Ça vaut le coup je pense. (Divulgation: travaillé il ya longtemps)

Enfin, nous utilisons Solr qui est basé sur Lucene. Solr utilise une API simple basée sur l'envoi de documents XML à un serveur. Assez simple pour s'interfacer avec n'importe quelle langue.