Récemment, je me suis retrouvé à me frotter aux limites des moteurs d'indexation de documents. Je développais un petit site Web qui avait besoin de capacités de recherche assez robustes, mais en raison de leurs contraintes matérielles, je ne pouvais pas déployer une solution Lucene-ish (comme Solr ou ElasticSearch, comme je le ferais normalement) pour répondre à ce besoin.
Et même alors, alors que je devais fournir des données et des calculs complexes qui nécessitaient beaucoup de bases de données, je n'avais pas besoin de gérer plus de 250 000 enregistrements potentiels. Déployer une instance Solr ou ES entière juste pour gérer cela semblait être un gaspillage.
Après y avoir réfléchi, cela semble être un problème assez important. La plupart des gens gèrent les exigences de recherche uniquement avec SQL. Ils exécutent simplement des requêtes SQL pour leurs données et c'est tout. Leurs capacités de recherche finissent également par être terribles.
Faire une recherche générique de texte intégral sur une couverture peut être douloureusement lent sur certains systèmes (hôtes partagés en particulier) et embourber votre base de données, surtout si vous avez des requêtes compliquées et beaucoup de jointures.
Vous finissez par faire plusieurs requêtes sur une seule demande de l'utilisateur. Vous pouvez contourner ce problème avec des requêtes de plus en plus compliquées, mais consultez le point précédent.
Manque de fonctionnalités généralement présentes dans les moteurs de texte intégral.
Les bases de données avaient le même problème de devoir être déployées en tant que serveur, puis SQLite est arrivé et soudain, nous avons pu déployer une base de données qui est autonome dans un seul fichier. Mon Google n'a rien produit - je me demande s'il existe quelque chose comme ça pour l'indexation / recherche en texte intégral.
Quels facteurs prendre en compte pour décider d'implémenter une indexation légère des documents (par exemple, comme expliqué dans les réponses à une autre question ) ou de continuer à utiliser SQL dans ces situations?