scieloorg / Web

SciELO Web
www.scielo.br
6 stars 21 forks source link

Estratégia sorrateira de resolução de idiomas de texto indisponíveis impacta negativamente no ranking do Google Scholar #710

Closed gustavofonseca closed 4 years ago

gustavofonseca commented 4 years ago

Na versão atual o site responde com código 200 para todo e qualquer idioma de texto solicitado, mesmo quando não disponível. Segundo nosso contato do Google Scholar este é um mau comportamento, pois não sinaliza para o crawler o que está acontecendo e gera conflitos que podem resultar em penalização no ranking de buscas.

Passos para reproduzir o problema

Acesse um documento num idioma indisponível (russo no exemplo) e perceba que é retornado o código 200 porém com o texto em outro idioma.

curl --head "http://www.scielo.br/scielo.php?script=sci_arttext&pid=S0044-59672019000400268&lng=en&nrm=iso&tlng=ru"
HTTP/1.1 200 OK
Date: Thu, 13 Feb 2020 20:48:35 GMT
Set-Cookie: PHPSESSID=tvtvbfa8qovh3h85j39pta0rk4; path=/
Pragma: no-cache
Content-Type: text/html; charset=UTF-8
cache-control: max-age=900
magicmarker: 1
Server: nginx
X-Varnish: 403311338
Age: 0
Via: 1.1 varnish-v4
Connection: keep-alive

Comportamento esperado

É importante termos uma estratégia de fallback para estes casos, entretanto é desejável informar o ocorrido ao cliente (no caso crawler do Google Scholar). Uma sugestão é redirecionar o cliente para o documento no idioma de fallback, por meio do código 302.

robertatakenaka commented 4 years ago

Artigo:

view-source:http://www.scielo.br/scielo.php?script=sci_arttext&pid=S0074-02762020000100200&lng=en&nrm=iso&debug=On

No script cgi-bin/ScieloXML/sci_arttext.xis, no trecho:

Captura de Tela 2020-02-14 às 14 16 39

obtém os valores dos parâmetros.

No script cgi-bin/ScieloXML/sci_arttext.xis, o trecho:

Captura de Tela 2020-02-14 às 14 20 58

retorna:

Captura de Tela 2020-02-14 às 14 16 08

No trecho seguinte, monta uma mensagem de erro caso algum destes parâmetros estão ausentes:

Captura de Tela 2020-02-14 às 14 23 30

Neste trecho:

Captura de Tela 2020-02-14 às 14 32 15

Caso o idioma do texto não venha preenchido na URL (&tlng), pega o v40, idioma principal do texto.

Este trecho vai montar a parte principal do XML:

Captura de Tela 2020-02-14 às 14 32 15
robertatakenaka commented 4 years ago

Para os documentos em formato XML, por exemplo: S0034-89102020000100203

O XML gerado pelo IsisScript também gera o elemento (já que todos os idiomas estão no mesmo XML SPS)

<filename>rsp/v54/1518-8787-rsp-54-05.xml</filename>

Para os documentos em formato HTML, o conteúdo do texto, vem dentro de <BODY> e é preenchido com o arquivo HTML correspondente ao idioma selecionado (tlng)

robertatakenaka commented 4 years ago

Para os documentos em formato HTML:

Sabe-se os idiomas do HTML pela tag <ART_TEXT_LANGS>


Captura de Tela 2020-02-14 às 16 43 37
Captura de Tela 2020-02-14 às 16 44 31
Captura de Tela 2020-02-14 às 16 45 45

O texto a ser apresentado é sabido pela lógica dentro do .xis (a detalhar ainda)

robertatakenaka commented 4 years ago

Para os documentos em formato XML, os idiomas são os das traduções:

<ART_TEXT_LANGS>
<LANG>pt</LANG>
<LANG>es</LANG>
</ART_TEXT_LANGS>

É na XSL que se resolve qual é o idioma do texto a ser apresentado de acordo os idiomas contidos no XML gerado pelo IsisScript. (Mais detalhes teria que avaliar a XSL)

robertatakenaka commented 4 years ago

Para os todos os documentos XML ou HTML:

//ARTICLE/@TEXTLANG contém o valor do parâmetro tlng=, não importa se é um valor válido ou não para o idioma do texto.

//ARTICLE/@ORIGINALLANG contém o valor do idioma principal do texto

//ARTICLE/@ORIGINALLANG

Captura de Tela 2020-02-14 às 15 33 58
gustavofonseca commented 4 years ago

Notei que há casos onde o elemento ART_TEXT_LANGS é vazio, por exemplo http://www.scielo.br/scielo.php?script=sci_arttext&pid=S0100-879X2020000300602&lng=en&nrm=iso&tlng=en&debug=xml. Neste caso devemos assumir que está disponível apenas em //ARTICLE/@ORIGINALLANG?

gustavofonseca commented 4 years ago

Acabei de ser informado pela equipe do Google Scholar que é preferível retornar o código 308 Permanent Redirect e não 302 Found como foi implementado.

jamilatta commented 4 years ago

👍