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

Responder a