• Cadastro
  • Fóruns
  • Manual
  • Projetos
  • Seminário
  • Tradução
  • Tutoriais
  • Dicas
Início

Itens ativos

  • Image Field - imagem não aparece
  • Site sobre o Pier de Ipanema
  • Subi o site mas imagens não aparecem
  • htaccess funciona em subdomínio mas não no raiz na locaweb
  • Duvidas com Formulários e Notícias
  • TiniMCE retira a tag 'rel=' do Lightbox2
  • Drupal no xammp -erro na instalação
  • Obter o URL Alias de um determinado caminho de taxonomia, através de PHP
  • Webform com %get - não funcionou
  • não sei trabalhar com o drupal
mais

Pesquisa

Google
Web Drupal Brasil

Login do usuário

  • Criar nova conta
  • Solicitar uma nova senha

Parceiros

Assine o RSS do Drupal-BR

RSS dos itens mais ativos

RSS do conteúdo

RSS dos comentários

Início

Correção de erro na criação da tabela temporária temp_search_results com PostgreSQL

Uso o drupal 5.5 com PostgreSQL e a busca por conteúdo não estava retornando resultados, descobri que o PHP para fazer o cálculo de relevância do resultado gerava um número com vírgula, assim o PostgreSQL não conseguia fazer o cálculo e não gerava a tabela temp_search_results.

CREATE TEMPORARY TABLE temp_search_results AS SELECT i.type, i.sid, 5 * (<strong>5,62872396826</strong> * i.relevance) + 5 * POW(2, (GREATEST(n.created, \ n.changed, c.last_comment_timestamp) - 1206739469) * 6.43e-8) + 5 * \ (2.0 - 2.0 / (1.0 + c.comment_count * <strong>0,04</strong>)) AS score FROM temp_search_sids i INNER JOIN search_dataset d ON i.sid = d.sid AND \ i.type = d.type INNER JOIN node n ON n.nid = i.sid LEFT JOIN \ node_comment_statistics c ON c.nid = i.sid WHERE (d.data LIKE 'maven') ORDER BY score DESC;

O problema pode ser resolvido alterando o código no search.module :

A linha abaixo gera o número com vírgula:

$select2 = str_replace('i.relevance', '('. (1.0 / $normalize) .' * i.relevance)', $select2);

É necessário criar uma outra variável para substituir no resultado a vírgula por ponto:

$norm2 = 1.0 / $normalize;

$norm2 = str_replace(',','.',$norm2);

e então alterar a variável na linha em questão:

$select2 = str_replace('i.relevance', '('. ($norm2) .' * i.relevance)', $select2);

Enviado por matheusespanhol em seg, 05/05/2008 - 11:15.
  • Por favor, se logue ou se registre para poder enviar comentários
  • 331 leituras
Designimage

Este site é feito, orgulhosamente, com Drupal.