Itens ativos
Pesquisa
Login do usuário
Assine o RSS do Drupal-BR
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);
- Por favor, se logue ou se registre para poder enviar comentários
- 331 leituras



