S'il existe un index commun, les requêtes avec un préfixe fixe peuvent utiliser l'index. Mais je ne sais pas ce qui commence par la méthode dont vous parlez. Si elle est dans le pilote, cela dépend du pilote et de ce que dit sa documentation. Le préfixe auquel je fais référence est la correspondance d'expressions régulières commençant par ^, telles que :
db.collection.find({name: /^张/})
Si vous regardez le plan d'exécution, vous pouvez voir IX_SCAN :
db.collection.find({name: /^张/}).explain(true)
L'index de texte intégral est une autre chose. En termes simples, vous n'avez pas besoin de vous demander si le préfixe est fixe, mais l'unité de base de l'index de texte intégral est 词, pas un mot. Donc le paragraphe suivant :
La Première Division est une bonne école
Lors de la recherche, vous pouvez trouver directement le mot souhaité, tel que :
db.collection.find({ $text: { $search: "好学校" } })
Mais si vous recherchez directement « école », vous ne pourrez peut-être pas le trouver :
Bien sûr, cela est lié à la façon dont les différents moteurs de segmentation de mots sont divisés. L'exemple sert simplement à illustrer les limites de l'indexation de texte intégral. De plus, les articles, quantificateurs et autres mots qui n'ont aucune signification réelle seront également filtrés, comme « personnalité » :
De plus, vous remarquerez peut-être également que la requête ci-dessus ne mentionne pas du tout le champ name, car il ne peut y avoir qu'un seul index de texte intégral sur une collection.
S'il existe un index commun, les requêtes avec un préfixe fixe peuvent utiliser l'index. Mais je ne sais pas ce qui commence par la méthode dont vous parlez. Si elle est dans le pilote, cela dépend du pilote et de ce que dit sa documentation. Le préfixe auquel je fais référence est la correspondance d'expressions régulières commençant par
^
, telles que :Si vous regardez le plan d'exécution, vous pouvez voir
IX_SCAN
:L'index de texte intégral est une autre chose. En termes simples, vous n'avez pas besoin de vous demander si le préfixe est fixe, mais l'unité de base de l'index de texte intégral est
词
, pas un mot. Donc le paragraphe suivant :Lors de la recherche, vous pouvez trouver directement le mot souhaité, tel que :
Mais si vous recherchez directement « école », vous ne pourrez peut-être pas le trouver :
Bien sûr, cela est lié à la façon dont les différents moteurs de segmentation de mots sont divisés. L'exemple sert simplement à illustrer les limites de l'indexation de texte intégral.
De plus, les articles, quantificateurs et autres mots qui n'ont aucune signification réelle seront également filtrés, comme « personnalité » :
De plus, vous remarquerez peut-être également que la requête ci-dessus ne mentionne pas du tout le champ
name
, car il ne peut y avoir qu'un seul index de texte intégral sur une collection.