Opa, valeu Francisco, legal o post, já passei para a equipe aqui dar uma lida e aproveito pra agradecer ao grupo pela ajuda. Fizemos uma versão utilizando as ideias postadas aqui e conseguimos bons resultados, estamos testando agora o elastic search.
Abraço! Em 8 de janeiro de 2016 17:05, ChIcO <[email protected]> escreveu: > 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 <[email protected]> > 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 <[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 >> > > > _______________________________________________ > 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
