Recherche Atlas
Configurez l'opérateur de recherche Atlas, le chemin d'extension Driver-native pour compound/filter, score, highlight, sequence token, paging/count selon la version 1.0.0.
Recherche Atlas de base
$search et $searchMeta doivent être la première étape du pipeline d'agrégation, donc ils sont séparés du flux général fields(...).end(). Vous pouvez également utiliser .search() sans index.
Opérateur de recherche
• constructeur racine : text, phrase, autocomplete, equals, exists, in, range, compound
• clause réutilisable : SearchOperators.text/phrase/autocomplete/equals/in/exists/range
• opérateur racine Driver-native : operator(SearchOperator)
• wrapper Driver nommé : SearchOperators.driver(name, operator)
compound prend en charge must, mustNot, should, filter, minimumShouldMatch, score et vous pouvez également passer directement un AtlasSearchOperator.
Texte / Phrase / Autocomplete
• text : chemin(s), requête(s), fuzzy, matchCriteria, synonymes, score
• phrase : chemin(s), requête(s), slop, synonymes, score
• autocomplete : chemin unique, requête(s), tokenOrder, fuzzy, score
• fuzzy(...) et synonyms(...) ne sont pas utilisés simultanément.
Différence entre la clause de recherche et les champs post-recherche
search().fields(...) n'est pas un filtre interne de $search, mais un $match général après $search. Pour limiter les candidats à l'étape de l'index de recherche, utilisez compound.filter(...).
Score et tri
scoreDesc()/scoreAsc() et le tri général sont prioritaires dans l'ordre d'appel. Pour une pagination stable, il est conseillé d'utiliser un tri de champ unique stable avec le score.
Détails sur le surlignage / score / token de séquence
L'alias par défaut est highlights, scoreDetails, searchSequenceToken. addFieldsScoreDetails() active également les détails de score de l'option de recherche.
Pagination / token de séquence / compte
count().execute()
C'est le compte final du pipeline prenant en compte post-search fields(...) et le seuil de score.
count().executeSearchMeta()
C'est le compte des métadonnées $searchMeta. Il prend en charge SearchCountType.TOTAL/LOWER_BOUND et ne lance pas $match après la recherche.
existsQuery().execute()
Vérifie s'il existe plus d'un résultat dans le pipeline de recherche.
Extension native du pilote
stage(Bson) est ajouté juste après $search et ne s'applique pas au pipeline de compte de métadonnées $searchMeta de executeSearchMeta(). Si de nouvelles fonctionnalités du pilote sont ajoutées avant l'API de commodité DSL, utilisez d'abord operator, driverOptions, stage, SortSpec.driver, customizeAggregation.