Opa chico, Muito bacana! Vou testar esse seu exemplo parece uma otima solução.
Obrigado! Em 6 de janeiro de 2016 16:24, ChIcO <[email protected]> escreveu: > Felipe, > > Entendi o que você precisa. > O tsearch2 você pode utilizar os operadores &(and) |(or) ^(not) quase > contemplando toda sua necessidade. > Se quiser fazer uma busca trazendo N resultados e ordenar por relevância > você pode utilizar o ts_rank ou o ts_rank_cd. Nesse link[1] tem exemplo. > Só cuidado se for alterar os pesos e fazer union, para o sua relevância > vir de forma correta. > > Realizei testes baixando a base de servidores do município de curitiba e > irei colocar duas consultas para vc ter uma ideia do uso da relevância. > Quando encontra os 3 termos pesquisados juntos ele vem por primeiro, os 3 > separados por segundo, dois juntos por terceiro, ... > > Estou pesquisando as Vantagens do Allan Henrique e retornando uma coluna > disp já com *BOLD* nas palavras pesquisadas. ts_headline [2] > # OU - Vantagens Allan Henrique > SELECT ts_rank_cd(fti, to_tsquery(replace('vantagens allan henrique',' > ','|'))) AS Relevancia, > nome,cargo,lotacao,descricao_evento,tipo_evento > ,ts_headline(nome||' '||cargo||' '||lotacao||' '||descricao_evento||' > '||tipo_evento, to_tsquery(replace('vantagens allan henrique',' ','|'))) > disp > FROM servidores > WHERE fti @@ to_tsquery(replace('vantagens allan henrique',' ','|')) > ORDER BY relevancia DESC; > > # AND - Vantagens Allan Henrique > SELECT ts_rank_cd(fti, to_tsquery(replace('vantagens allan henrique',' > ','&'))) AS Relevancia, > nome,cargo,lotacao,descricao_evento,tipo_evento > ,ts_headline(nome||' '||cargo||' '||lotacao||' '||descricao_evento||' > '||tipo_evento, to_tsquery(replace('vantagens allan henrique',' ','|'))) > disp > FROM servidores > WHERE fti @@ to_tsquery(replace('vantagens allan henrique',' ','&')) > ORDER BY relevancia DESC; > > # AND/OR - Vantagens Allan ou Henrique > SELECT ts_rank_cd(fti, to_tsquery('vantagens&(allan|henrique)')) AS > Relevancia, > nome,cargo,lotacao,descricao_evento,tipo_evento > ,ts_headline(nome||' '||cargo||' '||lotacao||' '||descricao_evento||' > '||tipo_evento, to_tsquery(replace('vantagens allan henrique',' ','|'))) > disp > FROM servidores > WHERE fti @@ to_tsquery('vantagens&(allan|henrique)') > ORDER BY relevancia DESC; > > > Outro detalhe interessante do tsearch2 é que pode ser utilizado um > dicionário de sinônimos e vocês especificar por exemplo: carro = automóvel, > professor = educador, ... assim a sua pesquisa consegue resultados > melhores. [3] > > > [1] http://linuxgazette.net/164/sephton.html > [2] > http://www.postgresql.org/docs/9.4/static/textsearch-controls.html#TEXTSEARCH-HEADLINE > [3] > http://www.postgresql.org/docs/9.4/static/textsearch-dictionaries.html#TEXTSEARCH-SYNONYM-DICTIONARY > [*] http://www.postgresql.org/docs/9.4/static/textsearch.html > > > > Att, > Francisco Summa > > Em 6 de janeiro de 2016 10:28, Felipe Moura <[email protected]> > escreveu: > >> Opa, valeu Sebastian, esses links ja ajudaram bastante, chegando em uma >> solução posto aqui para quem precisar de algo semelhante. >> >> Grato! >> >> Em 5 de janeiro de 2016 21:26, Sebastian Webber <[email protected]> >> escreveu: >> >>> >>> >>> Em 5 de janeiro de 2016 18:02, Felipe Moura <[email protected]> >>> escreveu: >>> >>>> Fala pessoal, >>>> >>>> Estamos com a necessidade de fazer uma pesquisa full-text por >>>> relevância e por separação de dados conforme a função full-text search do >>>> mysql. >>>> >>> >>> Boa noite! >>> >>> Chegastes a dar uma olhada na doc[1] oficial? Se dar uma procurada no >>> histórico vai ter uma penca de referencias que podem te apoiar. Como esse >>> post maneiro[2] do HJort. >>> >>> Caso tenhas alguma duvida mais específica, me avise. >>> >>> []'s >>> >>> [1] http://www.postgresql.org/docs/9.4/static/textsearch.html >>> [2] http://www.hjort.co/2011/07/full-text-search-em-portugues-no.html >>> >>> >>> >>> -- >>> Sebastian Webber >>> http://swebber.me >>> >>> _______________________________________________ >>> pgbr-geral mailing list >>> [email protected] >>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral >>> >> >> >> >> -- >> >> Atenciosamente, >> >> Felipe Moura >> Desenvolvedor >> http://about.me/felipewebdf >> twitter: @felipewebdf >> talk: [email protected] >> >> (61) 8490-8156 >> >> >> *Não é da benevolência do padeiro, do açougueiro ou do cervejeiro que eu >> espero que saia o meu jantar, mas sim do empenho deles em promover seu >> "auto-interesse".* >> >> _______________________________________________ >> pgbr-geral mailing list >> [email protected] >> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral >> > > > _______________________________________________ > pgbr-geral mailing list > [email protected] > https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral > -- Atenciosamente, Felipe Moura Desenvolvedor http://about.me/felipewebdf twitter: @felipewebdf talk: [email protected] (61) 8490-8156 *Não é da benevolência do padeiro, do açougueiro ou do cervejeiro que eu espero que saia o meu jantar, mas sim do empenho deles em promover seu "auto-interesse".*
_______________________________________________ pgbr-geral mailing list [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
