MongoDB Recherche de Texte ET de plusieurs mots de recherche
J'ai un index sur un tableau "clés" que je suis en utilisant la pleine fonctionnalité de texte pour mon application.
Avec la sortie de 2.4.3, j'aimerais utiliser le "texte" type d'index. - Je assuré d'un "texte" type d'index sur mon tableau "clés" et il semble que cela fonctionne SUPER rapide (plus rapide que mon vieux mots clés texte complet de la méthode).
Le problème c'est que mon application suppose que les champs sont inclus (ET). Par défaut, la recherche de texte Rup mes paramètres.
Quelqu'un sait-il d'un moyen de lancer une recherche de texte inclusivement?
Par exemple:
db.supplies.runCommand("text", {search:"printer ink"})
doit retourner des résultats avec l'imprimante et l'encre, au lieu de tous les résultats avec l'imprimante ou à l'encre.
- J'apprécierais vraiment une solution qui permet de ne pas tuer un radical de mot.
- Pourriez-vous trouver la solution avec un radical de mot?
Vous devez vous connecter pour publier un commentaire.
Essayer:
Aussi, voici une citation de docs:
Espère que ça aide.
These are some cool test entries here
, je vais le trouver avec{$search:"entry"}
mais pas avec{$search:"\"entry\""}
.var queryString = '\"' + q.split(' ').join('\" \"') + '\"'; var res = mycollection.find({ $text: { $search: queryString, $language: "fr" } });
et à mongodb.mycollection.createIndex( { "fieldName": "text"} )
456 ABC
. Quand je fais plusieurs recherche de phrase avec le mot-clé{ "$search" : "\"45\" \"ABC\"" }
ou{ "$search" : "\"456\" \"AB\"" }
, Il renvoie le document. Il ne devrait pas revenir résultat que les deux phrases ne sont pas exactement adaptéVous pouvez envelopper chaque mot entre guillemets:
Il ya un inconvénient si l'utilisateur entre une chaîne de caractères entre guillemets cela ne fonctionnera pas. Vous devez analyser chaînes entre guillemets premier.
Comme @alecxe souligné plus tôt, de faire ET de recherche sur le texte de l'indice de colonne, vous devez double-quote chaque mot de recherche.
Ci-dessous un rapide one-liner pour votre condition.
Ici est une fonction simple, j'ai fait de la recherche à l'aide de "sous-mots" dans le nœud. Espérons que cela aide quelqu'un
Supposons qu'un utilisateur recherche pour
pri nks
il devrait donc satisfaire imprimante et les encres, mais $texte de recherche ne permettent pas cela donc, voici ma fonction simple:et à utiliser dans votre requête de ce