Question

Nous créons une open source client Twitter et sont à la recherche d'un DB embarqué avec le plus faible encombrement possible qui fonctionne avec Delphi et qui se prête bien à recherche en texte intégral (je sais que doesn » t aller avec faible encombrement très bien). Idéalement, il devrait être libre ou open source aussi (je sais exigeant).

Je me penche vers SQLite, mais je ne l'ai pas utilisé avant et ne sais pas si ce soutient la recherche en texte intégral, ou comment il fonctionne avec Delphi. Je l'ai utilisé DBISAM avant et il est intégré avec recherche en texte intégral , mais pas libre. Firebird est une autre option que nous considérons.

Il pourrait y avoir une combinaison qui rend ce travail. Que voulez-vous utiliser et comment évaluer le fait pour 1) l'empreinte, 2) recherche plein texte, 3) libre / open source.

Mise à jour: Merci à tous pour vos suggestions. Tant de bons choix à choisir.

Était-ce utile?

La solution

J'ai eu beaucoup de succès en utilisant DiSQLite . Il a le soutien FTS et une tonne d'autres fonctionnalités. Ils ont une version gratuite et une version professionnelle. Je crois que la version gratuite ne FTS aussi. J'ai essayé plusieurs des implémentations de SQLite pour Delphi et c'est le meilleur que je l'ai vu. Il compile directement dans votre application donc il n'y a pas de DLL externes.

Je l'ai regardé beaucoup des bibliothèques libres là-bas pour les bases de données embarquées dans Delphi et beaucoup ne sont plus supportées, n'est sorti, ou ne fonctionne que dans Delphi5.

Autres conseils

Advantage Database Server a une redevance moteur libre de serveur local (multi-thread et le verrouillage de niveau record), grands Delphi TDataSet composants descendants (code source inclus), et un moteur de grande recherche en texte intégral.

recherche de texte intégral Avantage: AND, OR, NOT et NEAR. Avantage fournit également des fonctions SCOREDISTINCT score et scalaires qui renvoient le nombre total de toutes les instances de mots dans la condition de recherche.

Advantage index en texte intégral sont maintenus au moment de la mise à jour d'enregistrement ce qui signifie qu'ils ne nécessitent pas de reconstructions. Les indices sont dans un format compressé; Par conséquent, la taille réelle de l'indice peut être beaucoup plus petite que les données physiques. Il est possible d'effectuer des recherches en texte intégral sur des données non indexées, mais cela nécessite une recherche physique des données d'enregistrement et peut être beaucoup plus lent. Répertorié recherches utilisent des filtres bitmap pour des performances optimales.

L'aide en ligne a tous les détails en ce qui concerne les options d'indexation, etc .:

http://tinyurl.com/ctjoqg

Je sais que firebird a sphynx add-on pour le plein recherche de texte (bien que selon y site, il est «loin d'être réel « recherche en texte intégral »), sa source libre / ouverte, mais je ne peux pas trouver des informations pour dire si cela fonctionne avec la version intégrée de firebird.

Pour Firebird texte intégral regard Rechercher: http://www.firebirdfaq.org/faq328/

Leonardo.

Nous avons intégré DotLucene dans l'une de nos applications basées sur Delphi internes, en utilisant Hydra (Mike ne le travail là-dessus, à l'époque); si c'est une option que nous voulons poursuivre ici, je suis sûr que nous pouvons extraire et que la rendre réutilisable pour ce projet

Allez-y avec SQLite . Il y a beaucoup de composants GRATUIT SQLite pour Delphi. Certains d'entre eux ont cessé d'être des projets actifs. Mais l'une des composantes de la note est ZeosDB . ZeosDB est activement maintenu et son soutien SQLite est parfait aussi. Si vous avez besoin d'autres support moteur DB, ZeosDB est la réponse à nouveau (il prend en charge MySQL, PostgreSQL, Interbase, Firebird, MS SQL, Sybase, Oracle et SQLite).

NexusDB a version gratuite intégrée et bien sûr il est un produit Delphi natif.

Voici une description de c'est recherche en texte intégral mise en œuvre .

Je vous suggère que DBISAM, ou maintenant probablement leur devrait être fortement considéré ElevateDB, plus récente. D'après votre expérience précédente Je pense que vous le savez ne pas ajouter beaucoup à votre taille exécutable, est raisonnablement rapide, solution fiable, parfaite basée sur Delphi, et offre un excellent support. Au fil des années, leur dialecte SQL a été raffiné il est maintenant très agréable avec un haut degré de conformité ANSI SQL 2003.

DBISAM / ElevateDB est comme vous le notez pas open source, mais le coût de licence est par seul développeur (et non par le déploiement) donc s'il n'y a que quelques développeurs impliqués le coût est (à mon avis) négligeable. coût de licence est particulièrement raisonnable si l'on considère le niveau de soutien et de réactivité que vous obtenez sur DBISAM / newsgroups Elevatesoft, où le principal développeur / propriétaire (Tim Young) est activement impliqué des questions et des problèmes de répondeur résolution. Outre le coût d'une solution propriétaire, il y a bien sûr également préoccupé de savoir si l'entreprise survivra et produit continuera à être développé et soutenu à l'avenir. C'est quelque chose que vous devez peser pour vous-même, mais le développement semble aussi forte que jamais. Ils ont des fournisseurs .NET pour leurs DBs, et soutenir le développement multi-plateforme avec FreePascal / Lazarus.

Un plus à la recherche de texte intégral DBISAM est qu'il est étroitement intégré dans le SQL. Autrement dit, vous pouvez émettre une seule instruction SELECT qui combine directement les critères ordinaire où certains champs avec des critères de recherche en texte intégral sur les autres. En fonction de vos besoins, c'est une fonctionnalité intéressante qui le rend très simple et rapide à faire certaines choses qui prendraient plus de travail en utilisant une solution fulltext différente. Je pense que la plupart des solutions add-on, comme Lucene et d'autres qui pourraient être utilisés avec Firebird, ne pas intégrer aussi étroitement avec SQL régulière et vous limiter à récupérer un ensemble d'enregistrements avec des critères uniquement en texte intégral. Quelque chose comme add-on propriétaire de Textolution pour Firebird ( http://www.textolution.com/ftsib_example.asp ) ressemble à elle pourrait accueillir la construction complexe unique (imbriqué) requête applicable à la fois des critères réguliers et en texte intégral, mais DBISAM-t-il plus d'élégance. Et l'ajout d'un propriétaire add-on à une sorte db open source de défaites dans le but d'aller open source, de toute façon.

L'une des lacunes de la recherche de texte intégral de DBISAM / ElevateDB, je pense, est que se prend en charge l'utilisation que de « ET » et « OU » conditions, n'a pas de recherche de proximité.

Je remarque qu'il ya une solution pour SQLite texte intégral, http: // www. sqlite.org/cvstrac/wiki?p=FullTextIndex . Je n'ai jamais utilisé SQLite, mais je sais que beaucoup de gens l'aiment. Un domaine où je suis assez sûr DBISAM / Elevatesoft a grand avantage est dans les applications multi-utilisateurs où la fonctionnalité de verrouillage robuste est nécessaire, mais qui transporterait pas nécessairement du tout tout poids pour l'application de bureau mono-utilisateur.

Je voudrais aller avec SQLite en utilisant Aducom composants SQLite, ils sont faciles à travailler avec SQLite que DiSQLite, libre et le travail en tant que composants TDataset, je vote pour sqlite parce que:

  1. Il est base de données très rapide et compact.
  2. Très faible encombrement, juste 200kb dll.
  3. Il est peut être lié statique lorsqu'il est utilisé avec des composants Aducom, donc pas besoin de distribuer le dll.
  4. Il a un support intégré pour la recherche en texte intégral.
  5. Il est utilisé d'une manière extravagante et utilisé dans de nombreuses applications gratuites et commerciales en tant que stockage externe.
  6. Il a la plupart de la norme SQL, donc la plupart de vos connaissances en SQL seront utilisés.

SQLite est à peu près seul utilisateur / connexion seulement. Faire une mise à jour verrouille la base de données. Vous traitez cela en définissant une valeur de délai d'attente pour les autres connexions d'attente (par défaut est pas de délai). L'accès multi-utilisateur peut devenir très lent et / ou donner délai d'attente fréquents en fonction de la valeur que vous utilisez.

Je l'ai utilisé les composants Asqlite de http://www.aducom.com/ . Libre et Open Source. Ne prend pas en charge D2009 par les regards, mais il est en cours de développement. Il y a un certain nombre d'ensembles d'autres composants aussi bien, mais je n'ai pas utilisé tout autre.

Vous pouvez ajouter recherche de texte intégral à une application à l'aide delphi Rubicon (maintenant sous une nouvelle direction à http: // www .href.com / rubicon ). Toutefois, ce n'est pas libre: (

Pourquoi auriez-vous besoin d'une recherche en texte intégral pour cela? Je ne l'utilise Twitter, bu je crois twitter messages sont 140 caractères max? Ceux-ci cadrerait dans un champ varchar. Vous n'avez pas besoin de recherche en texte intégral pour trouver quelque chose dans ce domaine.

Il y a aussi DotLucene, qui ne nécessite le .NET Framework doit être installé, mais peut facilement être chargé par le .net com apis. Il est idéal pour la recherche et a un format de requête qui est commune à la plupart des moteurs de recherche.

J'ai une solution Delphi semi-travail ici: http://sourceforge.net/projects/mutis/ , un port de Delphi de Lucene.

Le mayority de celui-ci fonctionne bien, mais unfortunally était basé à la mort mise en œuvre Delphi.NET travail afin de mettre à jour requiere à un natif (oui, était une grosse erreur de prendre la route .NET :()

DBISAM tout le chemin. Works, très solide, intégré, l'indexation en texte intégral fonctionne très bien (une vaste expérience personnelle!)

ElevateDB est prob aussi grande, mais je n'ai pas l'expérience directe avec elle.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top