Felipe, http://franciscosumma.blogspot.com.br/2016/01/busca-textual-sinonimos-relevancia-e.html
Espero ajudar. Att, ChIcO Summa Em 6 de janeiro de 2016 22:41, Felipe Moura <felipegu...@gmail.com> escreveu: > Opa chico, > > Muito bacana! Vou testar esse seu exemplo parece uma otima solução. > > Obrigado! > > Em 6 de janeiro de 2016 16:24, ChIcO <franciscosu...@gmail.com> 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 <felipegu...@gmail.com> >> 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 <sebast...@swebber.me> >>> escreveu: >>> >>>> >>>> >>>> Em 5 de janeiro de 2016 18:02, Felipe Moura <felipegu...@gmail.com> >>>> 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 >>>> pgbr-geral@listas.postgresql.org.br >>>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral >>>> >>> >>> >>> >>> -- >>> >>> Atenciosamente, >>> >>> Felipe Moura >>> Desenvolvedor >>> http://about.me/felipewebdf >>> twitter: @felipewebdf >>> talk: felipegu...@gmail.com >>> >>> (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 >>> pgbr-geral@listas.postgresql.org.br >>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral >>> >> >> >> _______________________________________________ >> pgbr-geral mailing list >> pgbr-geral@listas.postgresql.org.br >> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral >> > > > > -- > > Atenciosamente, > > Felipe Moura > Desenvolvedor > http://about.me/felipewebdf > twitter: @felipewebdf > talk: felipegu...@gmail.com > > (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 > pgbr-geral@listas.postgresql.org.br > https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral >
_______________________________________________ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral