Le meilleur moyen d'effectuer une recherche plein texte dans MongoDB et de la Mangouste
Je cherche sur Google depuis des jours et j'ai essayé beaucoup de choses mais je ne peux toujours pas effectuer une bonne recherche en texte intégral sur ma collection pour l'utilisateur.
J'ai essayé ElasticSearch mais était assez impossible de requête et de la pagination...
J'ai essayé de nombreux plugins pour Mangouste comme ElMongo, la mangouste-plein-texte, Mongoosastic, etc... tout le monde est vraiment mal documenté et je ne sais pas comment faire pour effectuer une bonne recherche en texte intégral.
Donc, ma collection est une collection normale:
user = {
name: String,
email: String,
profile: {
something: String,
somethingElse: String
}
}
J'ai une recherche d'entrée dans une page avec un simple POST
, si je tape hello world
ce dont j'ai besoin est de faire une recherche sur l'ensemble du champs de la collection les mots correspondants de ma requête de recherche et obtenir des résultats.
Il va être vraiment sympa aussi d'avoir des options pour gérer une pagination de l'ordre de 10 articles par page ou quelque chose...
Quelle est la meilleure solution pour y parvenir? J'utilise MongoDB 2.6.* avec la Mangouste, NodeJS et ExpressJS.
Grâce.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez ajouter un l'index de texte à votre Mangouste définition de schéma qui vous permet d'utiliser la
$texte
opérateur dans votrefind
requêtes de recherche dans tous les champs inclus dans le texte, index.Pour créer un index à l'appui de la recherche de texte, par exemple,
name
etprofile.something
:Ou si vous souhaitez inclure tous les champs de type chaîne dans l'index, utilisez la
'$**'
générique:Cela vous permet de réalisé une paginé requête de recherche de texte comme:
Pour plus de détails, lire l'intégralité de l' MongoDB Index De Texte de la documentation.
Pour les requêtes de recherche que vous pouvez utiliser Elasticsearch plugin. Dans Elasticsearch, vous pouvez faire votre propre requête de recherche pour la recherche de tout texte et de la chaîne avec la durée de temps spécifiée dans le temps réel.
Mais avant que vous avez à faire de l'indexation de votre json docs résidant dans MongoDB. Vous devez vous connecter MongoDB avec Elasticsearch serveur.ensuite, à l'aide de la rivière de la fonctionnalité de la Elasticsearch vous avez à faire de l'indexation dans Elasticsearch serveur de vos données, puis seulement vous pouvez faire votre requête personnalisée pour la recherche.