Si vous avez vous aussi enfilé vos habits de chercheur d’or de l’API de Google, on pourrait avancer plus vite en se partageant le boulot d’investigation et d’interprétation. Pour collaborer, contactez-moi.

Le concept NSR (Normalized Site Rank ?) dans la GoogleApi.ContentWarehouse.V1.Model et dans le module QualityNsrNsrData

QualityNsrNsrData
0
(0)

Que signifie NSR ?

Un acronyme obscur

L’API de Google contient un certain nombre d’occurrences d’un terme mystérieux : NSR.

Si je cherche NSR sur Google, j’obtiens du bruit documentaire :

  1. Honda NSR, une gamme de motos…
  2. Site officiel du club de rugby Nancy Seichamps Rugby
  3. etc

Bref, officiellement, Google Search, la communauté SEO et le web entier ne savent pas ce que signifie NSR, potentiellement un concept-clé de Google Search… Quelle ironie !

Ce terme ressemble fort à un acronyme : chaque lettre serait l’initiale d’un mot, appartenant à une expression qui ferait sens.

On pourrait imaginer bien toutes sortes de significations, par exemple Non-Standard Response, Negative Search Rank, ou n’importe quoi d’autre. Des SEO connus ont lancé leurs hypothèses, en voici deux.

Mike King : Neural Semantic Retrieval ?

Un des premiers commentateurs de la Google Leak, Mike King, a suggéré dans cet article que la signification de NSR puisse être Neural Semantic Retrieval, c’est à dire, récupération sémantique neurale, ou plus explicitement, la récupération du sens d’une information au moyen d’un réseau neuronal, une forme d’intelligence artificielle qu’emploie Google depuis des années.

Voici la citation de Mike King :

Does NSR mean Neural Semantic Retrieval?
There are a ton of references to modules and attributes with NSR as part of the naming convention. Many of these are related to site chunks and embeddings. Google has previously discussed “Neural Matching” as a big focus for improvements. My educated guess is that NSR stands for Neural Semantic Retrieval and these are all features related to semantic search. However, in some instances they mention next to a “site rank.”

Traduction :

NSR signifie-t-il Neural Semantic Retrieval ?
Il existe une multitude de références à des modules et à des attributs dont la convention d’appellation est NSR. Nombre d’entre eux sont liés à des morceaux de site et à des éléments intégrés. Google a déjà évoqué la « correspondance neuronale » comme l’un des principaux axes d’amélioration. Je suppose que NSR signifie Neural Semantic Retrieval et qu’il s’agit de fonctionnalités liées à la recherche sémantique. Toutefois, dans certains cas, il est fait mention d’un « classement de site ».

Andrew Ansley : Normalized Site Rank ?

Andrew Ansley, un autre commentateur de la Google Leak formule une autre hypothèse :

I believe NSR is an acronym for Normalized Site Rank.

Traduction :

Je crois que NSR est un acronyme pour Normalized Site Rank (classement de site normalisé).

J’ai trouvé au moins un commentaire dans la doc Google qui pourrait accréditer cette interprétation de l’acronyme : dans on trouve cet attribut et ce commentaire :

hostNsr (type: integer(), default: nil) – Site rank computed for host-level sitechunks. This value encodes nsr, site_pr and new_nsr. See quality_nsr::util::ConvertNsrDataToHostNsr and go/nsr. This field is deprecated – used the equivalent field inside nsr_data_proto instead.

Traduction : Rang de site (site rank) calculé par morceaux de site au niveau hôte. Cette valeur encode nsr, site_pr et new_nsr. Voir quality_nsr etc.

Donc ce commentaire sur l’attribut hostNsr semble bien confirmer que SR dans NSR signifie Site Rank. De plus la mention de site_pr sonne transparente : il s’agirait du PageRank d’un site. Le PageRank inventé par Larry Page en 1997 est précisément l’algorithme sur lequel Google a fondé son succès.

En apprend-on un peu plus quand on scanne les contextes d’utilisation de ce terme ?

NSR dans les modules

De nombreux modules utilisent le terme NSR :

  • GoogleApi.ContentWarehouse.V1.Model.NSRVersionedItem
  • GoogleApi.ContentWarehouse.V1.Model.QualityNsrNsrChunksProto
  • GoogleApi.ContentWarehouse.V1.Model.QualityNsrNsrData
  • GoogleApi.ContentWarehouse.V1.Model.QualityNsrNsrDataClusterUplift
  • GoogleApi.ContentWarehouse.V1.Model.QualityNsrNsrDataEmbedding
  • GoogleApi.ContentWarehouse.V1.Model.QualityNsrNsrDataEncodedEmbedding
  • GoogleApi.ContentWarehouse.V1.Model.QualityNsrNsrDataMetadata
  • GoogleApi.ContentWarehouse.V1.Model.QualityNsrPQData

Cette nomenclature nous éclaire au moins sur quelques faits :

  1. Nsr est un concept subordonné au concept plus général de Quality, qualité ; dans le contexte d’une évaluation de la qualité des contenus web ?
  2. 5 modules sur 8 contiennent l’expression dérivée NsrData, données Nsr.
  3. Ces données Nsr font l’objet
    1. d’embedding (intégration, incorporation),
    2. de cluster uplift (« soulèvement de la grappe » ??),
    3. de chunks proto (« proto(type ?) de morceaux ( = parties d’un site ou d’une page web ?) » ??),
    4. de metadata (métadonnées).

Analyse détaillée du module QualityNsrNsrData

Jusqu’ici, on n’a toujours pas compris grand-chose à ce que fait ce Nsr.

Mais comme on va le voir, l’analyse détaillée du module QualityNsrNsrData qui semble jouer un rôle principal donne d’intéressantes infos.

Je vais citer le document original puis le traduire et le commenter.

GoogleApi.ContentWarehouse.V1.Model.QualityNsrNsrData
NOTE: When adding a new field to be propagated to Raffia check if NsrPatternSignalSpec needs to be updated. Next ID: 63

Traduction : NOTE : Lors de l’ajout d’un nouveau champ à propager dans Raffia, vérifier si NsrPatternSignalSpec doit être mis à jour. ID suivant : 63

On apprend donc l’existence du terme Raffia. On en reparlera.

Attributes

Ici commence la longue liste des attributs de ce module.

ugcScore (type: number(), default: nil) –

Rappelons que le terme ugc, connu, signifie user-generated content, contenu généré par l’utilisateur. C’est le cas d’un commentaire sous un article de blog WordPress ou sous une vidéo Youtube, d’un message dans un forum, etc. Le terme ugc s’utilise notamment dans le code HTML d’un lien, on écrit rel=ugc pour déclarer que le lien a été posté, non par l’auteur / éditeur du site, mais par un commentateur.

Cet attribut nous apprend donc que Google donne un score à des données générées par les visiteurs d’un site.

spambrainLavcScores (type: list(GoogleApi.ContentWarehouse.V1.Model.QualityNsrVersionedFloatSignal.t), default: nil) –

SpamBrain est un algorithme connu de Google, qui sert à lutter contre ce que Google considère comme spam.

titlematchScore (type: number(), default: nil) – Titlematch score of the site, a signal that tells how well titles are matching user queries.

On peut traduire cet attribut par « score de correspondance de la requête avec le titre ». Cela confirme un de mes tests SEO sur les mots-clés, qui dit que l’élément le plus impactant du texte d’une page web est son titre.

site2vecEmbeddingEncoded (type: list(GoogleApi.ContentWarehouse.V1.Model.QualityNsrNsrDataEncodedEmbedding.t), default: nil) – Encoded site2vec embedding (to be used in superroot) since the full embeddings take too much space.

Dans l’hypothèse où site2vec signifie site to vectors, cela voudrait dire qu’un site web est traité comme un LLM traite le corpus, au moyen d’une vectorisation sémantique.

Le mot superroot est employé. A ce que j’ai compris, c’est un système de Google qui coordonne les informations et fait la passerelle entre les systèmes profonds de Google et les utilisateurs. Superroot agit en gros comme un serveur, qui rassemble les éléments d’une commande et les envoie au client.

smallPersonalSite (type: number(), default: nil) – Score of small personal site promotion go/promoting-personal-blogs-v1

Google a donc un attribut smallPersonalSite, petit site personnel – on n’en connait pas les critères. Le commentaire de l’attribut renvoie à une url interne chez Google, go/promoting-personal-blogs-v1, qui pourrait vouloir dire que Google se donne pour objectif d’aider à promouvoir les petits sites ?

D’expérience, j’observe plutôt le contraire, cf mon analyse de la requête « chat angora » au cours de laquelle j’ai découvert que le top 10 de Google sur cette requête renvoie uniquement vers des sites possédés par des milliardaires et des multinationales, ou des géants industriels vendeurs de croquettes.

Si Google faisait vraiment la promotion des petits sites personnels, on trouverait dans le top 10 sur « chat angora » au moins un site de fan de chats, au moins un site de vétérinaire, au moins un site d’éleveur de chats angoras, mais ce n’est pas le cas. De fait, je pense que Google contribue très fortement à écraser les petites entreprises au profit des grosses.

pnavClicks (type: number(), default: nil) – denominator for the pnav computation

Mystère.

siteChunkSource (type: String.t, default: nil) – These are only annotated in the Goldmine NSR annotator.

Littéralement, source du morceau de site.

Première mention du terme Goldmine, qui comme on le verra est associé au terme Raffia déjà rencontré.

Et donc, cette source du morceau de site fait l’objet d’une annotation par l' »annotateur NSR de Mine d’or« … On dirait un peu un LLM qui fume du crack ou un roman de SF mais non, c’est de la doc technique Google, écrite en charabia médiéval.

clusterUplift (type: GoogleApi.ContentWarehouse.V1.Model.QualityNsrNsrDataClusterUplift.t, default: nil) –

Soulèvement de cluster, cluster signifiant une grappe, un groupe d’éléments. Mystère.

siteAutopilotScore (type: number(), default: nil) – Aggregated value of url autopilot scores for this sitechunk.

Il y a donc un score de « autopilote de site » ou « site sur autopilote » ? Peut-être un système qui détecterait le degré d’automatisation d’un site pour en déduire le niveau de qualité ?

A noter que l’attribut s’applique, d’après le commentaire, à un sitechunk, un morceau de site. Cela pourrait désigner par exemple des infos météo automatiquement ajoutées à une page sur un site de voyage ?

isVideoFocusedSite (type: boolean(), default: nil) – Bit to determine whether the site has mostly video content, but is not hosted on any known video-hosting domains. Site is considered to be video-focused, if it has > 50% of the URLs with watch pages (with smoothing prior). ariane/4045246

Cet attribut semble plus facile à comprendre que la moyenne : il détermine si un site web est consacré essentiellement à la vidéo, bien qu’il ne soit pas hébergé sur un nom de domaine connu pour faire de l’hébergement de vidéos. La condition est que plus de 50% des pages de ce site contienne des vidéos.

metadata (type: GoogleApi.ContentWarehouse.V1.Model.QualityNsrNsrDataMetadata.t, default: nil) –

Cet attribut renvoie vers le module QualityNsrNsrDataMetadata.

chromeInTotal (type: number(), default: nil) – Site-level Chrome views.

Cet attribut nous donne une info cruciale : il prouve que Google utilise les données des utilisateurs récoltées grâce à son navigateur Google Chrome (à notre insu).

Le commentaire est très clair : Site-level Chrome views, c’est-à-dire les vues de toutes les pages du site dans Chrome.

On ne peut pas conclure pour sûr que cette valeur est un facteur de classement, mais on peut le supposer : il serait logique que Google cherche à valider les choix de l’humanité sur le web. La règle serait : plus un site est visité, quelle que soit la manière dont le public y accède (autre que Google), plus Google enverra de trafic à ce site – un peu comme dans la parabole de Matthieu, « On ne prête qu’aux riches ».

Si cette hypothèse est vraie, on pourrait en déduire que, faire la promotion de ses pages web sur les réseaux sociaux fait augmenter le trafic depuis Google.

chardVariance (type: number(), default: nil) –

chardScoreVariance (type: list(GoogleApi.ContentWarehouse.V1.Model.QualityNsrVersionedFloatSignal.t), default: nil) – Site-level Chard Variance for all pages of a site.

chardScoreEncoded (type: list(GoogleApi.ContentWarehouse.V1.Model.QualityNsrVersionedIntSignal.t), default: nil) – Site-level Chard (encoded as an int).

Je ne comprends rien à ces attributs, à cause du mot « chard » dont les dictionnaires me dit qu’il s’agit de… blettes, ce légume-feuille…

Il y aurait une « variance de Chard au niveau du site entier »… mystérieuse cuisine googlesque !!

nsrdataFromFallbackPatternKey (type: boolean(), default: nil) – If true indicates that we do not have NSR data computed for the chunk, and instead the data is coming from an average of other host chunks.

Traduction : Si vrai, cela indique que nous n’avons pas de données NSR calculées pour le bloc, et que les données proviennent d’une moyenne d’autres blocs hôtes.

siteQualityStddevs (type: list(GoogleApi.ContentWarehouse.V1.Model.QualityNsrVersionedFloatSignal.t), default: nil) –

Mystère, mais cela parle de qualité d’un site.

clusterId (type: integer(), default: nil) – An id for defining clusters of sites. Used in ecosystem experiments (project Tundra).

Traduction : Un identifiant pour définir des groupes de sites. Utilisé dans les expériences sur les écosystèmes (projet Tundra).

Intéressantes notion d’écosystème et de projet Tundra.

videoScore (type: number(), default: nil) –

Il y a donc un « score vidéo ». De quelle nature, pour quoi faire ? Mystère.

shoppingScore (type: number(), default: nil) –

Il y a donc un « score de shopping », qui sert peut-être à identifier si un site est marchand ou pas.

nsr (type: number(), default: nil) –

Intéressant : NSR est lui-même le nom d’un attribut, défini sous la forme d’un nombre.

localityScore (type: number(), default: nil) – Locality score of the site, i.e. the locality component of the LocalAuthority signal (see go/pq-localauthority).

Traduction : Score de localité du site, c’est-à-dire la composante localité du signal LocalAuthority (voir go/pq-localauthority).

Cet attribut pourrait jouer un rôle dans la manière dont Google fait correspondre les requêtes avec le marché local « autour de moi », par exemple pour afficher les boulangeries dans les 20km à la ronde quand je cherche « croissants frais ». Un site pourrait être perçu par Google comme plus ou moins local (ou le contraire, global, général ?) Par exemple, le site d’une psy qui ne fait que des consultations en cabinet serait plus local que le site d’une psy faisant essentiellement de la téléconsultation.

siteChunk (type: String.t, default: nil) – Primary NSR sitechunk. In most of the cases it’s same as HOST_LEVEL_V3 sitechunked canonical url of the document. In rare, but important cases it’s based on page markup (see quality/nsr/util/sitechunker.h for details).

Traduction : Le sitechunk primaire du NSR. Dans la plupart des cas, il s’agit de l’url canonique HOST_LEVEL_V3 du document. Dans de rares cas, mais importants, il est basé sur le marquage de la page (voir quality/nsr/util/sitechunker.h pour plus de détails).

 

i18nBucket (type: integer(), default: nil) – Currently corresponds to i18n_g42_bucket.

i18 est un code connu qui signifie « internationalisation », synonyme de « multilingue ».

chardEncoded (type: integer(), default: nil) – Site-level chard score: site quality predictor based on content.

Revoilà nos blettes…

articleScoreV2 (type: number(), default: nil) –

Intéressant ! Il existe donc un « score d’article », en version 2 (?) Aucune idée de comment ce score serait calculé – et cet attribut n’est mentionné qu’une fois dans la doc.

nsrEpoch (type: String.t, default: nil) – The epoch from which this NSR value is coming from.

Traduction : L’époque d’où provient cette valeur de NSR.

tofu (type: number(), default: nil) – Site-level tofu score: site quality predictor based on content.

Traduction : Score tofu au niveau du site : prédicteur de la qualité du site basé sur le contenu.

Décidément, les Googlers semblent apprécier les métaphores culinaires. L’attribut tofu permettrait donc de prédire la qualité d’un site à partir d’un chunk, morceau ?

Si oui, cela signifierait qu’il faut veiller à ne publier que de la qualité, quoi qu’on fasse : donc éviter les pubs racoleuses, les liens sponso non-déclarés vers des pages louches, les bidules mal écrits par IA, etc.

siteLinkOut (type: number(), default: nil) – Aggregated value of url link out scores for this sitechunk.

Traduction : Valeur agrégée des scores de liens d’url « out » pour ce sitechunk.

Cet attribut est difficile à traduire et à comprendre : que signifie « url link out scores » ? L’expression « link out » n’est pas ordinaire en anglais. Est-ce une manière de désigner les liens sortants d’une partie d’un site, et de leur attribuer un score de qualité ? Si oui, cela pourrait servir à mal noter les sites qui font du netlinking par des liens « sitewide » (sur tout le site) dans leur pied de page (footer) par exemple.

nsrOverrideBid (type: number(), default: nil) – This signal is used to unconditionally override NSR as a bid in Q*. Should only be used in case of emergency (see go/nsr-override-bid). To have any effect, the value should be present and greater than 0.001.

Traduction : Ce signal est utilisé pour surcharger inconditionnellement NSR en tant qu’enchère à Q*. Il ne doit être utilisé qu’en cas d’urgence (voir go/nsr-override-bid). Pour avoir un effet, la valeur doit être présente et supérieure à 0,001.

Attribut obscur, mais qui pourrait vouloir dire que des employés de Google peuvent contredire l’évaluation d’une IA sémantique, si on s’aperçoit que l’évaluation algorithmique donne un résultat qui laisse à désirer – par exemple, faire la promo d’un conseil médical erroné, ou mettre en avant des propos diffamatoires ?

language (type: integer(), default: nil) –

Cet attribut sans commentaire désigne probablement la langue du texte évalué de manière « NSR ». C’est utile vu que « chat » ne veut pas dire la même chose en français et en anglais.

clutterScores (type: list(GoogleApi.ContentWarehouse.V1.Model.QualityNsrVersionedFloatSignal.t), default: nil) –

Mystère.

host (type: String.t, default: nil) –

host, en informatique, en général cela désigne le serveur, la machine qui héberge un site web et en livre les pages aux navigateurs clients.

isCovidLocalAuthority (type: boolean(), default: nil) – Bit to determine whether the site has the local authority covid signal, as computed by go/covid-local-authority

Traduction : Bit permettant de déterminer si le site possède le signal covid de l’autorité locale, tel que calculé par go/covid-local-authority

Ainsi, Google aurait mis en place une détection automatique des sites officiels concernant le covid. (Sites officiels qui pouvaient dire tout et son contraire.)

pnav (type: number(), default: nil) – Fractional signals.

Mystère.

siteQualityStddev (type: number(), default: nil) – Estimate of site’s PQ rating stddev–spread of the page-level PQ ratings of a site. Note this is different from nsr_variance which predicts error of NSR itself from the aggregated site-level rating.

Traduction : Estimation de la note de PQ du site stddev-étendue des notes de PQ au niveau des pages d’un site. A noter que ceci est différent de nsr_variance qui prédit l’erreur du NSR lui-même à partir de l’évaluation agrégée au niveau du site.

Note : il semble que PQ signifie en réalité PageQuality, qualité de la page.

impressions (type: number(), default: nil) – Site-level impressions.

Ce que Google nomme les impressions, c’est le nombre de fois que les pages d’un site web apparaissent dans les résultats de la recherche Google. On peut les connaître notamment en enregistrant son site dans la Google Search Console.

directFrac (type: number(), default: nil) –

Mystère.

vlq (type: number(), default: nil) – Score of the Video LQ model.

Traduction : Score du modèle Vidéo LQ.

LQ pourrait signifier Low Quality.

racterScores (type: list(GoogleApi.ContentWarehouse.V1.Model.QualityNsrVersionedFloatSignal.t), default: nil) – Site-level AGC classification score (see also go/project-racter-overview).

Traduction : Score de classification AGC au niveau du site

Sauf qu’évidemment on ne sait pas ce qu’est la classification AGC.

spambrainLavcScore (type: number(), default: nil) – The SpamBrain LAVC score, as of July 2022. See more information at go/cloverfield-lavc-deck.

Deuxième occurrence de ce concept, cette fois au singulier.

url (type: String.t, default: nil) –

Ha ! Cet attribut semble vouloir dire que tous les attributs de ce module concernent une page web, définie par son url.

secondarySiteChunk (type: String.t, default: nil) – Secondary NSR sitechunk. When present, it provides more granular chunking than primary sitechunks (see quality/nsr/util/sitechunker.h for details).

Cet attribut nous donne un indice sur le fonctionnement de Google, qui découperait les pages web en « sitechunks », morceaux de site.

articleScore (type: number(), default: nil) – Score from article classification of the site.

Traduction : Score obtenu à partir de la classification des articles du site OU de la classification « article » du site.

Sous une allure plus transparente que les autres, cet attribut reste obscur : est-ce une évaluation de la qualité globale des articles d’un site, ou de leur statut d’articles en tant que genre ?

En effet on pourrait envisager que Google cherche à faire la distinction entre des pages web qui sont des articles (posts de blog, articles de presse, tutos…) et d’autres qui n’en sont pas (page montrant une galerie de photos, des vidéos, des audios, un fichier de tableur, etc).

site2vecEmbedding (type: list(GoogleApi.ContentWarehouse.V1.Model.QualityNsrNsrDataEmbedding.t), default: nil) – Site2vec embeddings.

On retrouve le concept de site2vec, conversion de site en vecteurs ?

versionedData (type: list(GoogleApi.ContentWarehouse.V1.Model.QualityNsrNSRVersionedData.t), default: nil) – Versioned map of NSR values for experimenting with the next release.

Traduction : Carte versionnée des valeurs des RSN pour l’expérimentation de la prochaine version.

 

siteLinkIn (type: number(), default: nil) – Average value of the site_link_in for pages in the sitechunk.

Traduction : Valeur moyenne du site_link_in pour les pages du sitechunk.

Mystère.

ketoVersionedData (type: list(GoogleApi.ContentWarehouse.V1.Model.QualityNsrKetoKetoVersionedData.t), default: nil) – Keto data.

Mystère.

ymylNewsV2Score (type: number(), default: nil) –

YMYL signifie Your Money Your Life, votre argent votre vie : c’est une classification par Google des sites aux enjeux sensibles, financiers ou médicaux : banques, assurances, bourse, santé etc.

L’attribut semble ici calculer le score de sensibilité des actualités (news).

isElectionAuthority (type: boolean(), default: nil) – Bit to determine whether the site has the election authority signal, as computed by go/election-authority

Traduction : Bit permettant de déterminer si le site possède le signal de l’autorité électorale, tel que calculé par go/election-authority

sitePr (type: number(), default: nil) –

Difficile d’en être sûr mais le terme PR en anglais est connu : Public Relations, relations publiques.

priorAdjustedNsr (type: list(GoogleApi.ContentWarehouse.V1.Model.QualityNsrVersionedFloatSignal.t), default: nil) – NSR – prior. Estimate of whether the site is above/below average NSR in its slice.

Traduction : NSR – antérieur. Estimation du fait que le site se situe au-dessus/au-dessous du NSR moyen dans sa tranche.

A noter : la notion de « slice », tranche, désigne un découpage par pays ou par Etat (aux Etats-Unis et ailleurs), et par appareil (mobile, tablette, ordinateur).

healthScore (type: number(), default: nil) – Categorical signals.

Ce « score de santé » est difficile à interpréter en l’absence d’infos complémentaires.

Il pourrait évaluer si la thématique du site est la santé.

Ou, il pourrait évaluer si la page web considérée est plus ou moins en bonne santé, c’est-à-dire bugguée.

clutterScore (type: number(), default: nil) – Delta site-level signal in Q* penalizing sites with a large number of distracting/annoying resources loaded by the site (see go/clutter-v0).

Traduction : Signal Delta au niveau du site dans Q* pénalisant les sites ayant un grand nombre de ressources distrayantes/ennuyeuses chargées par le site (voir go/clutter-v0).

Note : ces ressources, ce sont les fichiers de type css, js et autres.

vlqNsr (type: number(), default: nil) – NSR from a headroom model targeting low-quality video sites.

Traduction : NSR d’un modèle de marge de manœuvre ciblant les sites vidéo de faible qualité.

nsrVariance (type: number(), default: nil) –

Mystère.

Conclusion

On ne sait toujours pas clairement ce qu’est le NSR, mais on comprend mieux à quelques concepts il est associé.

Je pense que l’interprétation de NSR comme voulant dire Normalized Site Rank est très crédible, ce sens collerait aux contextes d’utilisation et aux attributs de NsrData.

Qu'avez-vous pensé de cet article ?

Cliquez sur une étoile pour donner votre avis

Avis moyen 0 / 5. Nombre d'avis donnés 0

Soyez le premier à donner votre avis

2 réflexions sur “Le concept NSR (Normalized Site Rank ?) dans la GoogleApi.ContentWarehouse.V1.Model et dans le module QualityNsrNsrData”

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

Besoin d’un hébergeur ?

Convivial, sympa, fiable, et pas cher,
O2Switch me semble être la meilleure offre actuellement sur le marché français.
C’est pourquoi j’y héberge tous mes sites.

Hébergement O2Switch
Hébergement O2Switch

Théories non-vérifiées, affirmations gratuites, croyances sans fondement :
saurez-vous remettre en cause votre approche du référencement ?

Panier
Retour en haut