2009-06-04 4 views
7

Je suis à la recherche de l'implémentation de la recherche en texte intégral dans notre base de données Firebird. Nos exigences sont les suivantes:Recherche plein texte avec Firebird et Delphi

  1. Chaque champ de plusieurs tables doit être indexé. Lorsqu'un résultat est trouvé, nous devrions être en mesure de trouver la table d'origine.
  2. L'index peut être stocké dans la base de données ou dans le système de fichiers.
  3. Les résultats de la recherche (clés primaires BigInt) doivent être utilisés pour joindre les enregistrements d'origine dans la base de données afin d'afficher les enregistrements dans une table.

Quelqu'un peut-il recommander un moyen décent de réaliser ce dont nous avons besoin? J'ai regardé en quelque sorte l'intégration de DotLucence dans Delphi, mais je ne peux pas vraiment trouver beaucoup d'informations sur la façon de s'y prendre.

Répondre

12

Voici quelques ressources pour que vous considériez:

  • Sphinx très puissant et populaire recherche gratuit open source texte intégral du moteur.
  • Textolution Recherche de texte intégral pour Interbase et Firebird.
  • IBObjects Recherche de texte intégral ("Fuzzy Search"), un module entièrement fonctionnel qui peut être utilisé pour configurer vos index de recherche ou comme modèle pour votre propre implémentation personnalisée.
  • Rubicon est un add-on Delphi qui vous permet de mettre des capacités de recherche de texte intégral dans vos applications.
  • Fulltext Search for Firebird SQL By Dan Letecky sur CodeProject en utilisant le moteur de recherche de texte intégral DotLucene.
  • Mutis est un port Delphi du moteur de recherche Lucene. Fournissez une API flexible pour les index, les catalogues et les informations textuelles de recherche avec des performances exceptionnelles. Excelent pour mettre en application des moteurs de recherche faits sur commande, recherche, récupération de texte, extraction de données et plus.

Il existe un code fork of Firebird fabriqué par une société appelée Red Soft. Il est sous licence sous la même licence que Firebird, vous pouvez donc jeter un coup d'œil à leur version qui peut supporter les recherches en texte intégral en utilisant le moteur Lucene via les interfaces JavaVM.

Vous pouvez également lire un article intitulé "Full text search in Firebird without a full text search engine" par Bjoern Reimer et Dirk Baumeister, présenté à la 4e Conférence Firebird.

+1

Grande liste, Jim! – gabr

+0

Merci Jim. J'ai regardé la plupart d'entre eux, mais je n'ai jamais trouvé Mutis. Je télécharge maintenant. BTW, utilisez-vous FTS dans votre projet Twitter? Si oui, lequel avez-vous choisi? – norgepaul

+0

Nous prévoyons actuellement d'utiliser DISQLite3, mais le client a été mis en attente. Delphi en direct! et puis la famille en ville. Les choses se calment et maintenant j'ai du temps au travail. –

-1

Je pense que vous aurez un problème avec l'exigence 2: L'index peut être stocké dans la base de données ou dans le système de fichiers. La plupart des services d'indexation créent leur propre fichier d'index qui stocke les données de manière hautement optimisée. Si vous le voulez vraiment, il est peut-être possible de charger et de sauvegarder un index dans un seul champ de blob, mais je n'en vois pas vraiment la raison.

+0

nous ne voulons pas faire un champ 'comme où '% quelque chose%' ' – jorgeu

Questions connexes