2017-09-21 2 views
1

J'essaie de rechercher des mots multiples dans le texte inclusivement (opération AND) sans perdre le mot stemming.MongoDB Recherche de texte ET mots de recherche multiples avec le mot stemming

Par exemple:

db.supplies.runCommand ("texte", {recherche: "encres imprimantes"}) devrait renvoyer des résultats avec (imprimante et encre) ou (encre d'imprimantes) ou (encre d'imprimantes) ou (encres d'imprimantes), au lieu de tous les résultats avec l'imprimante ou l'encre.

Ce message traite de la recherche de plusieurs mots en tant qu'exploitation ET, mais la solution ne recherche pas les mots terminés ->MongoDB Text Search AND multiple search words.

La seule façon que je pouvais penser est la création d'une permutation de tous les mots, puis en exécutant la recherche du nombre de permutations (qui pourrait être grande)

Ce ne peut être un moyen efficace pour la recherche sur un grande collection.

Y a-t-il une meilleure façon de le faire?

Répondre

0

Y a-t-il une raison pour laquelle vous devez utiliser une recherche de texte? Si c'était moi, j'utiliserais une expression régulière.

https://docs.mongodb.com/manual/reference/operator/query/regex/

Du haut de ma tête quelque chose comme ça.

db.collection.find({products:/printers inks|printers|inks/}) 

Maintenant je suppose que vous pouvez faire la même chose avec une recherche de texte aussi.

db.collection.find({$text:{$search : "\"printers inks\" printers inks"}}) 

Notez les guillemets échappés.

+0

L'OP souhaite que tous les termes existent dans chaque document correspondant. Vos deux réponses sont trop permissives, elles correspondent aux documents avec un seul terme. –