2009-08-10 7 views
7

SQLite3 semble venir avec trois différents moteurs de recherche de texte intégral, appelés FTS1, FTS2 et FTS3. La documentation disponible sur le site mentionne que FTS1 est stable, FTS2 est en développement, et que vous devriez utiliser FTS2. Les exemples que je trouve en ligne utilisent FTS3, qui est dans CVS, et non documenté versus FTS2. Aucun des moteurs de recherche en texte intégral ne vient avec la source amalgamée, aussi près que je peux dire.Quel package de recherche de texte intégral dois-je utiliser pour SQLite3?

Alors, ma question: lequel de ces trois moteurs, le cas échéant, devrais-je utiliser pour l'indexation de texte intégral dans SQLite? Ou devrais-je simplement utiliser un outil tiers comme Sphinx ou une solution personnalisée dans Lucene?

Répondre

4

J'ai aussi récemment étudié des solutions de texte intégral. Il semble que SQLite n'a pas de choix de fait en ce moment. Peu importe ce que vous choisissez, il est inévitable que vous deviez le réorganiser au fur et à mesure que les différentes solutions FT2, FT3, etc. Alors mordez la balle et supposez que vous aurez besoin de faire plus de développement à l'avenir pour suivre le rythme de la technologie de texte intégral.

Sphinx Search n'a pas encore de support direct pour SQLite. Il ne supporte que MySQL et PostgreSQL (août 2009). Vous devrez donc pirater votre propre connecteur SQLite ou bien migrer des données SQLite vers MySQL ou PostgreSQL, puis indexer les données avec Sphinx Search. Je pense que quelqu'un travaille sur un correctif de Sphinx Search pour soutenir Firebird, alors peut-être que ce n'est pas si difficile si vous êtes prêt à retrousser vos manches.

Sachez également que Sphinx Search a certaines limitations concernant l'ajout incrémentiel de données à l'index. Vous devriez passer environ une heure à lire le document avant de décider de l'utiliser.

Je ne connais pas non plus de moyen direct d'indexer les données SQLite dans Lucene. Vous devrez probablement écrire votre propre code pour traiter des lots de données SQLite, en ajoutant des lignes à l'index Lucene un à la fois. Cela semble être l'utilisation de Lucene, peu importe ce que la base de données.


mise à jour:Solr est une grande technologie d'accompagnement pour Lucene. Solr donne à ce moteur de recherche de nombreuses fonctionnalités, y compris la possibilité de charger en bloc des données de résultats de requête à partir de n'importe quelle source de données JDBC.

+1

Je pense que sqlite3 fts3 est préférable à toute solution externe. Moins de pièces mobiles. Passer de fts2 à fts3 ne peut pas être aussi difficile que d'intégrer Sphinx avec ses limitations de mise à jour ou d'autres solutions externes. –

+1

@Seun: Je suis d'accord - un peu. Il est vrai que Sphinx Search nécessitait l'installation d'un autre logiciel, alors que fts3 est intégré à SQLite. Cependant, fts3 n'est pas intégré dans les versions par défaut, vous devez donc recompiler SQLite vous-même. Et fts3 est un type * table virtuelle *, vous devez faire une copie manuelle des données de la table source à la table fts3 indépendamment. Il y a des pièces mobiles, peu importe comment vous le faites. –

+0

FTS3 faisait partie de la DLL officielle, tout comme FTS4 maintenant. –

6

A partir du 3.6.21, FTS3 est bien documenté et a acquis un statut plus visible officiellement.

FTS3 fait partie de la version standard de la DLL de SQL sur Windows, pas sûr de la source fusionnée.

Nous l'utilisons sur la production depuis environ un an sans problèmes particuliers.

Questions connexes