Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Williams Duarte

Selecionar parte do conteúdo relevante + termo busca

Recommended Posts

Galera com o código abaixo seleciono o conteúdo e o titulo mais relevante =D

SELECT pages.*,
       MATCH (head, body) AGAINST ('email marketing de convites') AS relevance,
       MATCH (head) AGAINST ('email marketing de convites') AS title_relevance
FROM pages
WHERE MATCH (head, body) AGAINST ('email marketing de convites')
ORDER BY title_relevance DESC, relevance DESC

vamos supor que na minha busca retorne o texto abaixo:

 

 

 

Resumo: Em um ano de importantes acontecimentos no Brasil e no mundo, milhões de mensagens de email marketing serão enviadas. Com as recentes mudanças no comportamento das pessoas e o aprimoramento de programas de email e plataformas de envio, esperamos que o email marketing brasileiro avance em qualidade e inovação.


Maior volume de mensagens enviadas


2014 está recheado de eventos importantes, tanto nacionais quanto internacionais. Copa do mundo e Eleições figuram entre os mais comentados, mas também temos os eventos que acontecem todo ano e são muito relevantes para diversos segmentos de negócios, como eventos esportivos, literários, mega shows, entre outros.


Esses eventos desencadearão milhões de envios de email marketing de convites, incentivos, promoções e artigos que tornarão as caixas de entrada (e de spam) das pessoas mais movimentadas do que nunca.


Mais acessos via mobile



O acesso via celular cresceu, nada mais, nada menos, do que impressionantes 78,5% em 20 meses. Hoje, 43 milhões de brasileiros (com mais de 12 anos) navegam pela internet por meio de dispositivos móveis. Somando o acesso via tablets e celulares, o número de brasileiros que se conectam à internet cresceu 22,5% em 8 meses. Fonte: Pesquisa F/Radar 13a Edição(2013)



Impulsionada pelo constante lançamento de novos aparelhos no mercado e o upgradeque as pessoas fazem em celulares com tecnologias mais antigas para smartphones, essa estatística deve ser alterada expressivamente nos próximos meses.


As mensagens de email marketing precisam acompanhar essa tendência tornando-se adaptáveis ao ambiente móvel. As técnicas de responsive design para templates de email marketing aliadas ao bom planejamento estratégico são responsáveis pela adaptação do email a tablets e smartphones.


Foco em conteúdo educativo e informativo


Ações de email marketing que trazem conteúdos “educativos” em vez de apenas promocionais tendem a ter melhores resultados. Não adianta bombardear os destinatários com mensagens diárias de ofertas com a intenção de impactar pelo menos alguém. É preciso pensar o email marketing como fortalecedor do relacionamento e credibilidade digital.


O varejo pode enriquecer suas ações de email marketing ao agregar dicas e artigos a seus conteúdos, prestando um serviço de utilidade a seus contatos. Os pioneiros nessa prática foram os fashion e-commerces, que além de venderem roupas e acessórios da moda, também informam seu público sobre as tendências e dicas de looks. Há marcas que, além de enviarem seus emails de ofertas regulares, também incluíram os envios informativos em suas agendas de email marketing.


Maior responsabilidade para o profissional de marketing


Os profissionais de marketing têm cada vez mais poder em mãos para lidar com as necessidades do público de suas marcas. As métricas são mais fáceis de serem extraídas e as pessoas fornecem mais informações às empresas justamente para receberem conteúdos personalizados. E, como já dizia o sábio tio Ben, de Peter Parker, “com grande poder, vêm grandes responsabilidades”.


O profissional de marketing que trabalha com email marketing vem colecionando grandes responsabilidades no que se diz respeito à manipulação dos dados sensíveis de seus contatos, utilizando-os para segmentação e personalização do email marketing.


Quem quer ter resultados em suas ações de email marketing precisa respeitar os destinatários.


Templates de email marketing mais criativos


Sempre reforçamos a importância do template não ser composto apenas por imagens, mas sabemos o quanto elas são importantes para embelezar e informar. E agora que oGmail não bloqueia mais as imagens do email marketing, os designers têm um incentivo extra para caprichar no layout de seus templates.


O flat design dave se manter na web, já que muitas empresas estão trabalhando no redesign de seus sites para acompanhar essa tendência.


Gostaríamos muito de ver templates de email marketing mais interativos, aproveitando, por exemplo, a nova funcionalidade do Gmail com metadados.


Com as plataformas de envio disponibilizando testes AB em seus sistemas, os designers podem explorar novos horizontes em seus templates de email marketing e comprovar a aceitação do público. Permita-se inovar planejando templates de navegação horizontal, animados e com vídeos, por exemplo.


Investimentos na otimização de emails transacionais e de lifecycle


O maior desafio do email transacional é superar o caráter de reles mensagem automática que lhe é dispensado por vários departamentos de uma empresa que cuidam dele. A grande maioria dessas mensagens são geradas pelos departamentos de TI, atendimento ao cliente, vendas ou quaisquer outros que não o departamento de marketing e, por isso, não se consegue o aproveitamento máximo dos emails transacionais.


É tempo de rever este conceito e enxergar os emails transacionais como importantes comunicações com as pessoas, aproveitando suas altas taxas de visualizações e cliques.


Já os emails de lifecycle, ainda não muito explorados no Brasil, devem ser utilizados para estreitar o relacionamento com os contatos e ajudar a perceber seus interesses, favorecendo futuras ações segmentadas e personalizadas. Exemplos de mensagens delifecycle que devem ser muito exploradas são as de abandono de carrinho, aniversário e avisos importantes, como renovação de assinaturas, alertas sobre sua conta em um site ou aplicação etc.


Qualidade nos emails dos candidatos às Eleições 2014


Neste ano, teremos Eleições para Presidente, Governadores, Senadores, Deputados Federais e Deputados Estaduais.


Nas Eleições passadas, acompanhamos a qualidade do email marketing dos canditados à prefeitura da cidade de São Paulo avaliando diversos quesitos e, infelizmente, não chegamos a um resultado positivo, identificando muitas falhas pelo caminho.


Esperamos, em 2014, observar um trabalho mais cuidadoso dos partidos e candidatos com suas comunicações por email, um processo que vai desde o cuidado com o formulário de cadastro no site, passando pela minuciosa revisão de textos e testes, até o respeito pela decisão de opt-out de cada indivíduo. Novamente, estaremos de olho!

 

 

e digitei email marketing de convites

 

Eu preciso destacar uma palavra-chave em um parágrafo, como o Google faz em seus resultados de busca. Quando um usuário procurar por uma determinada palavra-chave que deseja, retornar as mensagens que contenham as palavras-chave, mas para mostrar apenas partes dos posts (o parágrafo que contém a palavra-chave pesquisada) e para destacar as palavras-chave.

 

Exemplo:

3º parágrafo

 

Esses eventos desencadearão milhões de envios de email marketing de convites, incentivos, promoções e artigos que tornarão as caixas de entrada (e de spam) das pessoas mais movimentadas do que nunca.

 

 

 

Alguém tem alguma idéia de como se fazer isso, ou link onde fala a respeito.

 

Desde já agradeço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiz uma coisa parecida em Delphi uma vez usando uma classe de RichEdit, talvez seja um caminho em php, mas não conheço php para ir além disto.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Motta valeu =D

 

Achei este post

 

Fiz alguns testes, todas as funções não está 100%, o que não impede de ser corrigido, fica o link para quem precisar no futuro.

 

Abs.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola Amigos,

 

Williams, meu caso é muito parecido com o seu.

 

Tenho um site de pesquisa e busca por serviços e produtos diversos.

 

Meu MySQL não oferece suporte FULLTEXT.

 

Então estou contando com a ajuda de vocês para solucionar meu problema, pois o que eu queria era pesquisar e retornar resultados de duas colunas.

 

Exemplo: Quando procuro por algo do tipo: "roupa infantil" ele não exibe nada por que "roupa" esta na coluna 1 e "infantil" na coluna 2, ou até mesmo “roupa” vir com uma palavra no meio antes do "infantil", não retorna nada.

 

Mas digitando apenas uma palavra a busca é precisa, e até duas, mas tem que estar em ordem na mesma linha e campo no BD.

 

Uso um arquivo PHP que tem este código atualmente:

 

if ($trecho != ""){

$sql = "select * from assinante_comercial WHERE ((nm_fantasia_empresa LIKE '%$trecho%') or"

." (ds_ramo_atividade_empresa LIKE '%$trecho%') or (ds_endereco_empresa LIKE '%$trecho%') or"

." (nm_bairro_empresa LIKE '%$trecho%') or (nm_responsavel_empresa LIKE '%$trecho%')) order by nm_fantasia_empresa";

 

 

Tentei usar este:

 

if ($trecho != ""){

$sql = "select * from assinante_comercial WHERE MATCH (nm_fantasia_empresa , ds_ramo_atividade_empresa , ds_endereco_empresa , nm_bairro_empresa , nm_responsavel_empresa) AGAINST ('$trecho') order by nm_fantasia_empresa";

 

 

Não deu certo, mas não sei se foi pela falta de suporte, pois inclui todos os campos no Índice do MySQL como INDEX (tipo), já que não deixa selecionar FULLTEXT.

 

Tem alguma coisa que eu possa fazer neste código MATCH AGAINST que dê pra usar mesmo sem suporte fulltext? Ou mesmo no meu código atual para otimizar a pesquisa.

 

Tem algo errado nas sintaxes, funções, etc?

 

Outras informações: Meu Mysql é InnoDB, Query, etc.

(Eu sei, é tudo meio antigo, foi criado há 9 anos, mas estou tentando é atualizar)

 

Agradeceria muito pela ajuda.

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Renato Fonte

 

FullText Search passou a ser suportado pelo InnoDB a partir da versão 5.6+, antes somente por MyISAM, e não recordo qual versão, acho que 5.5.

 

O mais interessante é que não incluiram na nova versão do MySQL Workbench 6.1 CE suporte a FullText Search em InnoDB, mas agora é da oracle sabe como é!

 

Não testei por outros, só consegui configurar pelo Navicat, e o navicat para tabelas em innoDB e show, da suporte a vários dbs relacionados!

 

E para usar tem que ter os indices criados em full text.

 

Senão conseguir usar full text, adpate a claúsula abaixo

<?php

   $pesquisa = 'carro verde amassado ';

   $palavras = explode( ' ', $pesquisa ); // dividindo as palavras pelo espaço
   $palavras = $array_filter($pesquisa); // eliminando ítens vazios

   $where = '';
   $cola = 'WHERE ';

   //Aqui você pode juntar vários campos no concat.
   $campo = 'CONCAT( title, " ", description, " ", author)';

   foreach ($palavras as $palavra) {
      $palavra = trim($palavra); //Removendo espaços em branco
      $palavra = mysql_real_escape_string($palavra); //Precisa da conexao com o banco!
      $where .= $cola.campo.' LIKE "%'.$palavra.'%" ';
      $cola = 'AND ';
   }

   echo htmlentities( $where );?>

Fonte: http://bit.ly/RzKxWV

Compartilhar este post


Link para o post
Compartilhar em outros sites

Williams,

 

Muito obrigado pela atenção e informações.

 

A minha página foi criada por amadores e é administrada por fuçadores, no caso eu (rsrsrs), então se você puder fazer outro favor, nesta clausula que você passou eu não sei o que alterar na codificação, ou seja, eu teria que colocar o nome dos campos ou titulos que estão no meu BD (Ex.: nome_fantasia_empresa) neste seu código que você passou.

 

Teria como você, com base nas informações do código original acima, fazer essas modificações pra mim e postar o código completo e pronto. (esses dados do 1º tópico são reais e é assim que esta no PHP original)

 

E me oriente se eu substituiria algo por esta nova clausula, ou apenas incluiria esta clausula e onde, que linha ou próximo do que?

 

Desculpa a "folga", mas é que eu não entendo mesmo.

 

Agradeceria muito.

Compartilhar este post


Link para o post
Compartilhar em outros sites

quais são os campos que você quer usar full text?

 

Poste a estrutura de sua tabela também, para que eu possa dar uma olhada =D

 

Já adiantando é como eu disse acima, para que funcione FULL TEXT, ter que ter índices criados, se não tiver suporte a InnoDB, converta para MyISAM

 

exemplo do indices

 

FULLTEXT INDEX `nome_da_idx` (`coluna_1`) ,
FULLTEXT INDEX `nome_da_idx2` (`coluna_1`, `coluna_2`)

//mais de 03 já exagero, mas a sequencia é esta!
FULLTEXT INDEX `nome_da_idx3` (`coluna_1`, `coluna_2`, `coluna_3`)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Williams,

 

Valeu, mais uma vez.

 

Veja se é esta a estrutura que você pediu:

 

http://www.telesaopedro.com/estrutura

 

Os campos que preciso ser FULLTEXT são: 'nm_fantasia_empresa' e 'ds_ramo_atividade_empresa'

 

A tabela abaixo, na estrutura, são os campos indexados, aí o nome da tabela passa a ser ALTER TABLE 'assinante_comercial DROP INDEX (esse drop index é parte do nome?)

 

QQ coisa de uma visitada a Página Principal do meu site faça buscas por uma palavra, tipo "roupa" "auto center", "center auto" (essa ultima não retorna resultados), talvez ajude também para compreender o que eu gostaria que ele fizesse.

 

Abs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Até o phpMyAdmin já esta na versão 4.1+ hehehe

SELECT *, MATCH (`nm_fantasia_empresa`,`ds_ramo_atividade_empresa`) AGAINST ('roupa infantil' IN BOOLEAN MODE) AS relevancia, MATCH (`nm_fantasia_empresa`) AGAINST ('roupa infantil' IN BOOLEAN MODE) AS titulo_relevancia FROM `assinante_comercial` WHERE MATCH (nm_fantasia_empresa,ds_ramo_atividade_empresa) AGAINST ('roupa infantil' IN BOOLEAN MODE) ORDER titulo_relevancia + relevancia DESC LIMIT 10

ou

SELECT *, MATCH (`nm_fantasia_empresa`,`ds_ramo_atividade_empresa`) AGAINST ('roupa infantil' IN BOOLEAN MODE) AS relevancia, MATCH (`nm_fantasia_empresa`) AGAINST ('roupa infantil' IN BOOLEAN MODE) AS titulo_relevancia FROM `assinante_comercial` WHERE MATCH (nm_fantasia_empresa,ds_ramo_atividade_empresa) AGAINST ('roupa infantil' IN BOOLEAN MODE) ORDER titulo_relevancia DESC, relevancia DESC LIMIT 10

O tipo do indice em que ser FULL TEXT e não INDEX

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vou tentar explicar melhor

 

Vamos supor que em seu guia tenha três campos que você quer ordenar por relevância, de acordo com o a palavra chave digitada.

 

Os campos são:

nome_empresa

descricao_empresa

tags_empresa

 

 

 

a primeira relevância seria pelo nome da empresa

 

sendo assim, você teria que criar o primeiro índice para a coluna nome_empresa

FULLTEXT INDEX `nome_da_idx_1` (`nome_empresa`) 

a segunda relevância, caso não ache nada muito relevante no nome_empresa

 

cai no indice nome_da_idx_2

 

sendo assim, você teria que criar o segundo índice para as duas colunas

FULLTEXT INDEX `nome_da_idx_2` (`nome_empresa`, `descricao_empresa`) 

caso inda não ache nada nas duas primeiras, vá para terceira

 

sendo assim, você teria que o terceiro índice para as tres colunas

FULLTEXT INDEX `nome_da_idx_3` (`nome_empresa`, `descricao_empresa`, `tags_empresa`) 

Acho que mais de 02 já é exagero, por perdera em performance.

 

lembrando que se a keyord tiver <=3 caracteres o full text não funciona, ae tem que buscar com like.

 

basicamente isso

if (strlen($keyword) <=3){
     //use like
} else {
     //use full text
}

Acho deu para dar uma clareada

Compartilhar este post


Link para o post
Compartilhar em outros sites

beleza Willams,

 

Deu certo os códigos, os dados estão sendo achados no BD e os resultados mostrados, como citado acima, eu mudei a estrutura e estão inclusos no indice.

 

Agora estou usando este código no arquivo PHP

 

if ($trecho != ""){
$sql = "SELECT * FROM assinante_comercial2 WHERE MATCH (nm_fantasia_empresa,ds_ramo_atividade_empresa) AGAINST ('restaurante vidro' IN BOOLEAN MODE) ORDER BY nm_fantasia_empresa";
O problema é que quando eu digito (por exemplo) na busca "magazine" ele retorna todos os restaurantes da cidade e nenhum magazine. no AGAINST, aquelas palavras chave tem que ser assim ou existe algum coringa?
E outra coisa, quando eu uso a palavra "relevancia" no final, dá erro na busca, já tentei "relevance", ja susbstitui order by, etc.
Williams, por gentileza, de uma olhada neste site http://saopedro.portaldeguias.com.br digite a palavra "rimar" com campo de busca e note que o buscador sugere o nome completo "rimar utilidades domésticas".
Fazer isso no meu site é muito complicado? Como isso se chama?
Grato

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aqui o correto é order by, tinha esquecido do BY corrige e testa novamente

ORDER BY titulo_relevancia DESC, relevancia DESC LIMIT 10

E outra coisa, quando eu uso a palavra "relevancia" no final, dá erro na busca, já tentei "relevance", ja susbstitui order by, etc.

 

relevancia é um alias "apelido" para

MATCH (`nm_fantasia_empresa`,`ds_ramo_atividade_empresa`) AGAINST ('roupa infantil' IN BOOLEAN MODE)

Coloque o nome que quiser

 

 

 

 

 

Williams, por gentileza, de uma olhada neste site http://saopedro.portaldeguias.com.br digite a palavra "rimar" com campo de busca e note que o buscador sugere o nome completo "rimar utilidades domésticas".
Fazer isso no meu site é muito complicado? Como isso se chama?
Grato

 

 

http://bit.ly/1hGMat9

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu Williams,

 

Eu li todos os tutoriais que você enviou através dos links a respeito do AUTO SUGGESTION e AUTO COMPLETE.

 

De todos os problemas que eu tenho, o maior de todos é que eu não sei adaptar os códigos e clausulas para o meu arquivo PHP. (rsrsrs) Então solicito mais uma vez sua boa vontade para adaptar essas clausulas pra mim.

 

Achei essas clausulas abaixo, talvez, uma delas se adapte melhor ao código original do meu arquivo PHP:

 

CÓDIGO 1

<Roteiro type = " text / javascript "src =" jquery.js " > </ script>
</ script>
$ ( documento ). ready (function () {
$ ( ". pesquisa" ). keyup (function ()
{
. var SearchBox = $ (this) val ();
var dataString = ' searchword = '+ Caixa de Busca;
if (Caixa de Busca =='')
{}
else
{
$ ajax ({.
type: " POST ",
url: " pesquisa. php ",
dados: dataString,
cache: false ,
success: function (html)
{
$ (" # exibição . "). html (html) espetáculo ();
}
});
} return false;
});
}); < / script>

<Input type = " text classe "=" pesquisar "id =" Caixa de Busca "/>

<Div id = " exibição " >

</ Div>

 

 

CÓDIGO 2:

? <Php
include (' config.php ');
if ( $ _POST )
{
$ q = mysql_real_escape_string (( $ _POST [' searchword ]); / / Old consulta $ sql_rees = mysql_query ("SELECT * FROM test_user_data onde fname gostar '% $ q%' ou lname like '% $ q%' order by LIMIT uid 5 "); / / Nova consulta atualizada 2014/04/02 $ sql_res = mysql_query (" SELECT * FROM test_user_data onde (fname like ' % $ q % 'ou lname like' % $ q % ') OR (CONCAT (fname,' ', lname) like' %$ q % ') order by LIMIT uid = str_ireplace ($ q, $ re_fname, $ arq); $ final_lname = str_ireplace ($ q, $ re_lname, $ lname); ?> <div class = "display_box "align =" left " > <img src = "user_img / <? php echo $ img; > "

 

 

CÓDIGO 3

  1. <?php
  2. // DESENCORAJO O USO DE MYSQL FUNCTIONS
  3. mysql_connect('localhost','root','');
  4. mysql_select_db('nome_banco');
  5. $term = trim(strip_tags($_GET['term']));
  6. $qstring = "SELECT nome FROM linguagem WHERE nome LIKE '%".$term."%'";
  7. $result = mysql_query($qstring);
  8. while ($row = mysql_fetch_array($result,MYSQL_ASSOC))
  9. values {
  10. $row['nome'] = htmlentities(stripslashes($row['nome']));
  11. $row_set[] = $row['nome'];
  12. }
  13. echo json_encode($row_set);
  14. ?>

 

QUAL SERIA MAIS PRATICA? E COMO FICARIA UMA DESSAS CLAUSULAS ACIMA, OU APENAS PARTE DELAS, ADAPTADAS AOS CÓDIGOS ORIGINAIS ABAIXO?

 

Código que eu uso desde o começo:

if ($trecho != ""){
$sql = "select * from assinante_comercial WHERE ((nm_fantasia_empresa LIKE '%$trecho%') or"
." (ds_ramo_atividade_empresa LIKE '%$trecho%') or (ds_endereco_empresa LIKE '%$trecho%') or"
." (nm_bairro_empresa LIKE '%$trecho%') or (nm_responsavel_empresa LIKE '%$trecho%')) order by nm_fantasia_empresa";

 

Código que eu estou tentando usar:

 

if ($trecho != ""){

$sql = "select * from assinante_comercial WHERE MATCH (nm_fantasia_empresa , ds_ramo_atividade_empresa , ds_endereco_empresa , nm_bairro_empresa , nm_responsavel_empresa) AGAINST ('$trecho') order by nm_fantasia_empresa";

 

Mas se você achar melhor um outro código, que não esses e irá funcionar melhor, fica a vontade.

 

Mais uma vez, Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Williams,

 

Este é o código que tenho no meu arquivo PHP completo.

COMO ELE FICARIA COM O AUTO COMPLETE?

 

 

<?php
$con = mysql_connect("10.0.0.223", "NOME DE USUARIO", "SENHA");
//$con = mysql_connect("10.0.0.223", "root");
$total = 0;
?>
<html>
<head><title></title>
<link rel="stylesheet" href="style/style.css">
</head>
<body>
<form name="con_Com" action="consulta.php" method="post">
<?php
if (strlen($trecho) < 3) {
echo ("<br><b>A pesquisa deve possuir no mínimo três caracteres</B>.");
}
else {
if ($trecho != ""){
$sql = "select * from assinante_comercial where ((nm_fantasia_empresa LIKE '%$trecho%') or"
." (ds_ramo_atividade_empresa LIKE '%$trecho%') or (ds_endereco_empresa LIKE '%$trecho%') or"
." (nm_bairro_empresa LIKE '%$trecho%') or (nm_responsavel_empresa LIKE '%$trecho%')) order by nm_fantasia_empresa";

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para jquery auto suggestion ou complete

 

as querys é a mesma que você já usa em sua busca normal.

 

Agora aconselho abrir outro tópico com essa nova dúvida, para não sairmos fora do contexto "Full Text", assim mantemos o fórum organizado.

 

Nossas dúvidas hoje é de alguém amanhã. :thumbsup:

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.