La clause de cache active la fonctionnalité Searcher Cache, qui met en cache les résultats des requêtes après le tri détaillé ou la dispersion des documents. Les requêtes identiques ultérieures ignorent entièrement le tri approximatif et le tri détaillé, ce qui améliore les performances des requêtes au niveau du nœud de travail Searcher.
La clause de cache est facultative. Ajoutez-la à une instruction de requête pour contrôler le comportement de mise en cache par requête.
Le composant Searcher Cache met en cache les résultats après le tri détaillé. Pour garantir qu'un nombre suffisant de résultats soit mis en cache, spécifiez le paramètre rank_size dans le scoreur de reclassement ou le paramètre rerank_size dans une clause de configuration. Si trop peu de résultats passent le tri détaillé, le cache risque de ne pas contenir suffisamment de documents pour satisfaire les requêtes futures.
Syntaxe
{
"cache": {
"enabled": true,
"cache_key": 1234567890,
"expire_time": "now()+300",
"current_time": 1235,
"cache_filter": "a > 10",
"cache_doc_num_limit": [200, 3000],
"refresh_attributes": ["price", "sell_count"]
}
}
Paramètres
| Paramètre | Type | Valeur par défaut | Obligatoire | Description |
|---|---|---|---|---|
enabled |
Booléen | — | Non | Indique s'il faut activer le Searcher Cache. Valeurs valides : true, false. |
cache_key |
Entier | Hachage de l'instruction de requête | Non | Clé de cache pour la requête. Une clé de cache stable améliore le taux de succès du cache. Si omis, le système calcule un hachage de l'instruction de requête et l'utilise comme clé. |
expire_time |
Expression (UINT32) | N'expire jamais | Non | Durée de conservation du cache en secondes. Accepte une expression d'attribut, une expression de fonction, une expression d'attribut virtuel ou une expression arithmétique combinant ces types. La valeur de retour doit être de type UINT32 ; si la valeur renvoyée n'est pas de type UINT32, le système signale une erreur. Avant la mise en cache, le système évalue cette expression pour chaque document et utilise la valeur minimale comme durée de conservation pour tous les éléments mis en cache. Omettez ce paramètre si vos données ne nécessitent pas de mises à jour incrémentielles ni de gestion de la fraîcheur des informations. |
current_time |
Entier | Heure système actuelle | Non | Horodatage de référence pour les vérifications d'expiration. S'il est défini, le composant Searcher Cache compare expire_time à cette valeur pour déterminer si un élément mis en cache a expiré. Si omis, l'heure système actuelle est utilisée. |
cache_filter |
Expression | — | Non | Conditions de filtre appliquées aux éléments mis en cache. Utilise la même syntaxe que les expressions de filtre standard. |
cache_doc_num_limit |
Tableau d'entiers | [200, 3000] |
Non | Nombre maximal de documents à mettre en cache. Spécifiez ce paramètre dans chaque instruction de requête pour maintenir un taux de succès du cache cohérent. Prend en charge des limites par paliers. |
refresh_attributes |
Tableau de chaînes | — | Non | Champs d'attribut dont les valeurs sont actualisées depuis l'index lorsque le cache est atteint. Seuls les champs d'attribut définis dans le schéma sont pris en charge ; les champs d'attribut issus d'une clause virtual_attribute ne sont pas pris en charge. Utilisez ce paramètre lorsque la durée de conservation du cache est longue et que certaines valeurs d'attribut changent fréquemment. |
Fonctionnement des limites par paliers de cache_doc_num_limit
Le nombre de documents mis en cache dépend de la valeur required_topK pour la requête. La valeur required_topK est calculée comme suit :
Nœud de travail Searcher unique :
required_topK = start + hitPlusieurs nœuds de travail Searcher :
required_topK = min(start + hit, searcher_return_hits), oùsearcher_return_hitsest défini par le nœud de travail Query Result Searcher (QRS)
Avec cache_doc_num_limit défini sur [280, 780], le cache applique les politiques suivantes :
**required_topK** |
Documents mis en cache |
|---|---|
| ≤ 280 | 280 |
| 281–780 | 780 |
| > 780 | Égal à required_topK |
La spécification de plusieurs paliers permet au cache de servir des requêtes avec différentes exigences topK à partir du même ensemble de résultats mis en cache, augmentant ainsi le taux de succès du cache.
Exemple
{
"cache": {
"enabled": true,
"cache_key": 1234567890,
"expire_time": "now()+300",
"current_time": 1235,
"cache_filter": "a > 10",
"cache_doc_num_limit": [200, 3000],
"refresh_attributes": ["price", "sell_count"]
}
}
Notes d'utilisation
La clause de cache est facultative. Omettez-la si la mise en cache n'est pas requise pour une requête.
Par défaut, les éléments mis en cache n'expirent jamais. Le composant Searcher Cache supprime les éléments selon l'algorithme du moins récemment utilisé (LRU) lorsque la capacité du cache est atteinte.
Définissez
expire_timeuniquement lorsque vos données exigent une gestion de la fraîcheur des informations. Pour les ensembles de données statiques ou ceux sans mises à jour incrémentielles, la valeur par défaut (aucune expiration) suffit.Pour maintenir les valeurs des attributs mis en cache à jour lorsque la durée de conservation du cache est longue, utilisez
refresh_attributespour spécifier les champs à actualiser à chaque accès au cache.Spécifiez
cache_doc_num_limitdans chaque instruction de requête. Des limites incohérentes entre les requêtes réduisent le taux de succès du cache.