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

Responder a