filipedeschamps / tabnews.com.br

Conteúdos para quem trabalha com Programação e Tecnologia.
https://tabnews.com.br
GNU General Public License v3.0
5.32k stars 388 forks source link

Barra de busca #927

Closed LeoSousa155 closed 1 year ago

LeoSousa155 commented 1 year ago

Utilizando a plataforma percebi que ela não tem uma barra de busca de buscas para procurar posts com conteúdos específicos. Por exemplo poderia existir uma barra no topo da página em que poderiamos procurar por termos (por exemplo "Javascript") e filtrar os posts que tivessem Javascript no seu conteúdo.

Jetrom17 commented 1 year ago

Utilizando a plataforma percebi que ela não tem uma barra de busca de buscas para procurar posts com conteúdos específicos. Por exemplo poderia existir uma barra no topo da página em que poderiamos procurar por termos (por exemplo "Javascript") e filtrar os posts que tivessem Javascript no seu conteúdo.

Concordo. Isso já é um planejamento futuro criado. Já existem tipos de sugestões similares. Thanks pela, mais uma.

luiz-leite-dev commented 1 year ago

acabei de criar um mecanismo de pesquisa programável: https://cse.google.com/cse?cx=c78b7565990294f01

seria só incluir isso na barra de título do tabnews: <script async src="https://cse.google.com/cse.js?cx=c78b7565990294f01"></script><div class="gcse-search"></div>

aprendendofelipe commented 1 year ago

Estou direcionando as conversas sobre as funcionalidade de pesquisa para essa issue porque ela é a mais antiga que está aberta, mas recomendo verem também o que foi discutido em algumas das duplicadas, como a #1084

mthmcalixto commented 1 year ago

O @mpedroni #1084 chegou perto do que eu cheguei em #1454 também, mas existe contras e prós entre usar o MeiliSearch, veja uma comparação utilizando o Typesense: Compare Algolia vs ElasticSearch vs Meilisearch vs Typesense

mpedroni commented 1 year ago

O @mpedroni #1084 chegou perto do que eu cheguei em #1454 também, mas existe contras e prós entre usar o MeiliSearch, veja uma comparação utilizando o Typesense: Compare Algolia vs ElasticSearch vs Meilisearch vs Typesense

Eu gosto da ideia de usar essas ferramentas tipo Meilisearch e Typesense. Porém, como discutido na issue #1084, esse tipo de ferramenta implica um custo de manutenção. Visto que a plataforma é gratuita e (até onde eu sei kk) não gera renda, acredito que o ideal seria procurarmos soluções que não gerem mais custos para o Deschamps, visto que todo o custo do Tabnews sai do bolso dele.

Apesar de o Meilisearch e o Typesense apresentarem melhores resultados nas buscas, eu acho que vale a pena utilizar os recursos de full-text search do próprio PostgreSQL (também discutido na issue #1084) seja mais interessante por agora e, caso não seja suficiente, avaliar a utilização de um serviço externo (e os custos envolvidos nisso).

mthmcalixto commented 1 year ago

O @mpedroni #1084 chegou perto do que eu cheguei em #1454 também, mas existe contras e prós entre usar o MeiliSearch, veja uma comparação utilizando o Typesense: Compare Algolia vs ElasticSearch vs Meilisearch vs Typesense

Eu gosto da ideia de usar essas ferramentas tipo Meilisearch e Typesense. Porém, como discutido na issue #1084, esse tipo de ferramenta implica um custo de manutenção. Visto que a plataforma é gratuita e (até onde eu sei kk) não gera renda, acredito que o ideal seria procurarmos soluções que não gerem mais custos para o Deschamps, visto que todo o custo do Tabnews sai do bolso dele.

Apesar de o Meilisearch e o Typesense apresentarem melhores resultados nas buscas, eu acho que vale a pena utilizar os recursos de full-text search do próprio PostgreSQL (também discutido na issue #1084) seja mais interessante por agora e, caso não seja suficiente, avaliar a utilização de um serviço externo (e os custos envolvidos nisso).

O que eu entendi, Typesense crie um serviço e retorna os resultados da pesquisa com base nas consultas enviadas, acredito que seja mais barato do que fazer consulta diretamente no banco de dados, imagina a busca sendo chamada todo tempo no banco de dados iria sobrecarregar ele, usando o Typesense você consegue em tempo real o que escreve.

aprendendofelipe commented 1 year ago

Considerando que:

  1. Uma implementação bem feita de um sistema de buscas próprio vai envolver novos custos ou a exibição de anúncios;
  2. Mesmo optando por assumir novos custos, ainda dependemos de alguém dedicando um bom tempo para a implementação da funcionalidade;
  3. É importante ter um sistema de busca integrado ao TabNews que ajude aos usuários e nos permita algum controle sobre seu funcionamento.
  4. Talvez mais difícil do que implementar, seja gerenciar todas as possibilidades de indexação para que o sistema realmente ajude aos usuários a encontrar o que procuram.
  5. A melhor maneira de pesquisar conteúdos no TabNews atualmente é usando o Google. O que está longe do ideal, já que envolve a exibição de anúncios, pode levar os usuários para outros sites, e não nos fornece dados mais precisos sobre quem queria encontrar algo especificamente no TabNews.
  6. As pesquisas pelo TabNews no Google ajudam a melhorar o nosso SEO, o que atrai mais visualizações para os nossos conteúdos, mesmo de usuários que não estavam pesquisando diretamente pelo termo TabNews.
  7. Sempre vamos precisar dedicar esforços para mante um bom desempenho em SEO.
  8. O tempo e conhecimento dedicado para gerenciar o sistema de buscas próprio pode trazer melhores resultados ser for direcionado para melhorar o SEO.
  9. O Google fornece algumas maneiras de integrar o seu sistema de busca ao TabNews, mas, como qualquer outra opção, envolve custos ou a exibição de anúncios.
  10. Não temos como saber se vale a pena usar a versão sem anúncios do próprio Google (ou de qualquer outro serviço) ou se vale mais a pena ter um servidor próprio, pois não temos noção de qual seria o volume de utilização, o que implica que primeiro precisamos ter algum sistema de busca que nos forneça bons dados sobre a sua utilização.
  11. Fornecer uma forma de pesquisar diretamente no banco de dados do TabNews provavelmente não seria performático (podendo prejudicar a experiência em outras funcionalidades), e provavelmente não traria bons resultados para a maioria dos usuários que não soubessem usar bem a ferramenta. Por isso essa funcionalidade, se implementada, teria que primeiramente ser colocada em teste apenas para uma parte dos usuários.

Então eu gostaria de saber:

Enquanto ninguém implementa algum sistema mais robusto que possa ser disponibilizado de maneira geral, vocês acham que já ajudaria aos usuários se integrarmos o sistema do Google, mesmo mantendo os anúncios?

image

Eu acredito que já ajudaria alguns usuários, mas o principal é que teríamos dados sobre a utilização para avaliar se vale a pena implementar algo próprio, se vale manter os anúncios do Google (que podem até trazer alguma receita) ou se vale a pena pagar para o Google para remover os anúncios, o que é pouco provável, já que custa $5 a cada 1.000 pesquisas.

mthmcalixto commented 1 year ago

Considerando que:

  1. Uma implementação bem feita de um sistema de buscas próprio vai envolver novos custos ou a exibição de anúncios;
  2. Mesmo optando por assumir novos custos, ainda dependemos de alguém dedicando um bom tempo para a implementação da funcionalidade;
  3. É importante ter um sistema de busca integrado ao TabNews que ajude aos usuários e nos permita algum controle sobre seu funcionamento.
  4. Talvez mais difícil do que implementar, seja gerenciar todas as possibilidades de indexação para que o sistema realmente ajude aos usuários a encontrar o que procuram.
  5. A melhor maneira de pesquisar conteúdos no TabNews atualmente é usando o Google. O que está longe do ideal, já que envolve a exibição de anúncios, pode levar os usuários para outros sites, e não nos fornece dados mais precisos sobre quem queria encontrar algo especificamente no TabNews.
  6. As pesquisas pelo TabNews no Google ajudam a melhorar o nosso SEO, o que atrai mais visualizações para os nossos conteúdos, mesmo de usuários que não estavam pesquisando diretamente pelo termo TabNews.
  7. Sempre vamos precisar dedicar esforços para mante um bom desempenho em SEO.
  8. O tempo e conhecimento dedicado para gerenciar o sistema de buscas próprio pode trazer melhores resultados ser for direcionado para melhorar o SEO.
  9. O Google fornece algumas maneiras de integrar o seu sistema de busca ao TabNews, mas, como qualquer outra opção, envolve custos ou a exibição de anúncios.
  10. Não temos como saber se vale a pena usar a versão sem anúncios do próprio Google (ou de qualquer outro serviço) ou se vale mais a pena ter um servidor próprio, pois não temos noção de qual seria o volume de utilização, o que implica que primeiro precisamos ter algum sistema de busca que nos forneça bons dados sobre a sua utilização.
  11. Fornecer uma forma de pesquisar diretamente no banco de dados do TabNews provavelmente não seria performático (podendo prejudicar a experiência em outras funcionalidades), e provavelmente não traria bons resultados para a maioria dos usuários que não soubessem usar bem a ferramenta. Por isso essa funcionalidade, se implementada, teria que primeiramente ser colocada em teste apenas para uma parte dos usuários.

Então eu gostaria de saber:

Enquanto ninguém implementa algum sistema mais robusto que possa ser disponibilizado de maneira geral, vocês acham que já ajudaria aos usuários se integrarmos o sistema do Google, mesmo mantendo os anúncios?

image

Eu acredito que já ajudaria alguns usuários, mas o principal é que teríamos dados sobre a utilização para avaliar se vale a pena implementar algo próprio, se vale manter os anúncios do Google (que podem até trazer alguma receita) ou se vale a pena pagar para o Google para remover os anúncios, o que é pouco provável, já que custa $5 a cada 1.000 pesquisas.

Como pode ver os exemplos do Typesense em outro tópico que eu abri, ele consegue pesquisar em mais de 32 milhões de dados e ele faz isso em questão de segundos, tudo que ele faz é consulta nos dados que foi fornecido do arquivo .json.

Em questão do SEO, isso com Sitelinks search box é possível fazer um bom SEO, algo como /search={query} e o próprio Google pode substituir o {query} pela palavra que foi buscada e iria fazer muito mais pessoas.

Tudo que o Typesense faz é abrir uma posta e então você pode adicionar "documentos" e ele vai indexar esses dados, depois é tudo mais simples, basta fazer uma na "API" do Typesense e pronto, ele retorna e com ele é possível buscar posts relevantes etc...

mpedroni commented 1 year ago

Considerando que:

  1. Uma implementação bem feita de um sistema de buscas próprio vai envolver novos custos ou a exibição de anúncios;
  2. Mesmo optando por assumir novos custos, ainda dependemos de alguém dedicando um bom tempo para a implementação da funcionalidade;
  3. É importante ter um sistema de busca integrado ao TabNews que ajude aos usuários e nos permita algum controle sobre seu funcionamento.
  4. Talvez mais difícil do que implementar, seja gerenciar todas as possibilidades de indexação para que o sistema realmente ajude aos usuários a encontrar o que procuram.
  5. A melhor maneira de pesquisar conteúdos no TabNews atualmente é usando o Google. O que está longe do ideal, já que envolve a exibição de anúncios, pode levar os usuários para outros sites, e não nos fornece dados mais precisos sobre quem queria encontrar algo especificamente no TabNews.
  6. As pesquisas pelo TabNews no Google ajudam a melhorar o nosso SEO, o que atrai mais visualizações para os nossos conteúdos, mesmo de usuários que não estavam pesquisando diretamente pelo termo TabNews.
  7. Sempre vamos precisar dedicar esforços para mante um bom desempenho em SEO.
  8. O tempo e conhecimento dedicado para gerenciar o sistema de buscas próprio pode trazer melhores resultados ser for direcionado para melhorar o SEO.
  9. O Google fornece algumas maneiras de integrar o seu sistema de busca ao TabNews, mas, como qualquer outra opção, envolve custos ou a exibição de anúncios.
  10. Não temos como saber se vale a pena usar a versão sem anúncios do próprio Google (ou de qualquer outro serviço) ou se vale mais a pena ter um servidor próprio, pois não temos noção de qual seria o volume de utilização, o que implica que primeiro precisamos ter algum sistema de busca que nos forneça bons dados sobre a sua utilização.
  11. Fornecer uma forma de pesquisar diretamente no banco de dados do TabNews provavelmente não seria performático (podendo prejudicar a experiência em outras funcionalidades), e provavelmente não traria bons resultados para a maioria dos usuários que não soubessem usar bem a ferramenta. Por isso essa funcionalidade, se implementada, teria que primeiramente ser colocada em teste apenas para uma parte dos usuários.

Então eu gostaria de saber: Enquanto ninguém implementa algum sistema mais robusto que possa ser disponibilizado de maneira geral, vocês acham que já ajudaria aos usuários se integrarmos o sistema do Google, mesmo mantendo os anúncios? image Eu acredito que já ajudaria alguns usuários, mas o principal é que teríamos dados sobre a utilização para avaliar se vale a pena implementar algo próprio, se vale manter os anúncios do Google (que podem até trazer alguma receita) ou se vale a pena pagar para o Google para remover os anúncios, o que é pouco provável, já que custa $5 a cada 1.000 pesquisas.

Como pode ver os exemplos do Typesense em outro tópico que eu abri, ele consegue pesquisar em mais de 32 milhões de dados e ele faz isso em questão de segundos, tudo que ele faz é consulta nos dados que foi fornecido do arquivo .json.

Em questão do SEO, isso com Sitelinks search box é possível fazer um bom SEO, algo como /search={query} e o próprio Google pode substituir o {query} pela palavra que foi buscada e iria fazer muito mais pessoas.

Tudo que o Typesense faz é abrir uma posta e então você pode adicionar "documentos" e ele vai indexar esses dados, depois é tudo mais simples, basta fazer uma na "API" do Typesense e pronto, ele retorna e com ele é possível buscar posts relevantes etc...

O problema de usar o Meilisearch/Typesense é que existem custos envolvidos na manutenção, não é a toa que o que gera renda pra eles é o serviço gerenciado (a ferramenta em si é open source e é possível rodar por conta própria uma instância). Aí entra a questão: utilizar a ferramenta como um serviço gerenciado (que tem um custo e não é barato) OU rodar uma instância em uma máquina própria em algum cloud provider? Ambos os casos tem custos envolvidos, não só pra pagar a ferramenta em si (seja gerenciado ou rodando em uma máquina na AWS, por exemplo, que custa dinheiro) mas para manter isso funcionando (caso dê alguma problema) e para manter os dados sincronizados entre as bases de dados do Tabnews e da ferramenta (pensa que a cada novo post, comentário, like ou edição a gente teria que atualizar a base de dados da ferramenta).

aprendendofelipe commented 1 year ago

Enquanto ninguém implementa algo melhor, vocês acham que compensa inserir a barra do Google no header?

Serviria para ajudar no mínimo quem não se deu conta de que poderia pesquisar diretamente no Google?

Serviria para fornecer alguma estatística para nos basear na hora de implementar o nosso sistema próprio?

mthmcalixto commented 1 year ago

@mpedroni Não precisa atualizar com novos dados, existe mais ou menos uns 10k de posts, só inserir esses 10k e depois em tempo em tempo atualizar, cada 1k de posts, 2k de posts e atualizar. Tudo que precisa é ter só o título, não precisa talvez criar um sistema completo de busca, mas algo simples e rápido.

@aprendendofelipe por ser algo que exista em todo site, as pessoas talvez nem sabe que pode buscar no google usando "site:"

Sim, será interessante ter estatísticas para essa implementação.

mpedroni commented 1 year ago

@mpedroni Não precisa atualizar com novos dados, existe mais ou menos uns 10k de posts, só inserir esses 10k e depois em tempo em tempo atualizar, cada 1k de posts, 2k de posts e atualizar. Tudo que precisa é ter só o título, não precisa talvez criar um sistema completo de busca, mas algo simples e rápido.

@aprendendofelipe por ser algo que exista em todo site, as pessoas talvez nem sabe que pode buscar no google usando "site:"

Sim, será interessante ter estatísticas para essa implementação.

entendo, mas aí acho que usar uma ferramenta de busca não faria mais tanto sentido se não for pra ter os dados atualizados. Independente da frequência que os dados forem envidados e do quão consistente as bases serão entre si, isso ainda geraria custo né

mpedroni commented 1 year ago

Enquanto ninguém implementa algo melhor, vocês acham que compensa inserir a barra do Google no header?

Serviria para ajudar no mínimo quem não se deu conta de que poderia pesquisar diretamente no Google?

Serviria para fornecer alguma estatística para nos basear na hora de implementar o nosso sistema próprio?

eu acho que é uma boa sim... nem que seja um redirect pra uma pesquisa do Google com o tempo pesquisado e filtrando apenas os resultados do Tabnews. Na minha opinião, o problema de usar o Google é o usuário ter que sair do Tabnews pra pesquisar algo... se for possível utilizar a pesquisa do Google sem tirar o usuário de dentro do Tabnews, pra mim é uma excelente solução para o problema.

De fato um ponto importante a ser levado em consideração é como obter dados disso para ter noção do uso e do impacto que a feature vai gerar. Eu não sei se essa barra do Google que tu falou fornece algum tipo de estatística útil pra validar isso (na versão gratuita pelo menos kkk), mas isso é algo que pode ser contornado com uma pesquisa de satisfação simples.

Acredito que, pra esse primeiro momento, a solução ideal para isso seria sim incluir a pesquisa do Google na plataforma e, caso isso não forneça os dados necessários para avaliar se é uma solução boa o suficiente, planejar e rodar uma pesquisa de satisfação própria com os usuários (talvez valha a pena rodar essa pesquisa independentemente dos dados gerados pela pesquisa do Google).

Isso gera outro problema: planejar e rodar a pesquisa de satisfação kkkk. Sinceramente, não vejo que seja algo muito complexo implementar essa pesquisa de satisfação, e acredito ser a solução com melhor custo/benefício pra termos uma ideia de pra onde devemos seguir.

O que vocês acham?

aprendendofelipe commented 1 year ago

Não precisa atualizar com novos dados

Precisa atualizar!

A frequência até pode ser debatida, caso a sincronização não vá ser em tempo real, mas precisa ser tudo automatizado.

não precisa talvez criar um sistema completo de busca, mas algo simples e rápido.

Acho que o critério deve ser uma boa UX. Não compensa ter um sistema de busca só por ter.


o problema de usar o Google é o usuário ter que sair do Tabnews pra pesquisar algo... se for possível utilizar a pesquisa do Google sem tirar o usuário de dentro do Tabnews, pra mim é uma excelente solução para o problema.

Essa barra é inserida via JavaScript no próprio site. Não precisaria sair do TabNews.

Outra coisa que acho interessante é que testei uma configuração em que aparecem resultados tanto do próprio TabNews, como aqui do repositório. E gostei bastante dessa opção.

De fato um ponto importante a ser levado em consideração é como obter dados disso para ter noção do uso e do impacto que a feature vai gerar. Eu não sei se essa barra do Google que tu falou fornece algum tipo de estatística útil pra validar isso (na versão gratuita pelo menos kkk), mas isso é algo que pode ser contornado com uma pesquisa de satisfação simples.

O Google fornece as estatísticas do serviço Pesquisa Programável.

planejar e rodar uma pesquisa de satisfação própria com os usuários

Seria muito interessante se for feita por alguém de UX 👍

mpedroni commented 1 year ago

@aprendendofelipe concordo com todos os pontos que tu colocou na resposta acima desta 👍🏻

Sobre a pesquisa, de fato precisaríamos de uma pessoa de UX pra conseguir ser mais assertiva e gerar valor com a pesquisa. Não acho que seja difícil encontrar alguém disposto a ajudar (talvez caiba até um post no Tabnews sobre isso e ver se tem alguém interessado ou que conheça alguém que pode se interessar, já que acredito que a maioria dos usuários são devs).

Tu achas que só com as estatísticas que a Pesquisa Programável fornece é possível a gente responder, além de questões do tipo "quantos usuários estão usando a ferramenta de busca", "termos mais pesquisados", perguntas como: os resultados apresentados são relevantes? O usuário conseguiu encontrar o que procurava? Se não encontrou, foi porque ainda não existe post sobre o tema ou o post não foi recomendado para o usuário? É fácil e prático utilizar esse método de pesquisa?

aprendendofelipe commented 1 year ago

As estatísticas que teríamos seriam apenas para basear a decisão se vale a pena gerenciar por nossa conta ou contratar um serviço de busca e, nesse caso, qual serviço seria mais adequado de acordo com o volume de utilização.

mthmcalixto commented 1 year ago

@aprendendofelipe Sei que existe uma complexidade para fazer o sistema de busca mas acredito que não seja impossível e a própria comunidade iria ajudar com isso, mas como pode ver esses testes feitos pela Typesense (Typesense Benchmarks) , estão mexendo com milhões de dados e várias consultas de pesquisa simultâneas.

TabNews não tem tantos posts assim, com isso eu acredito que o custo para manter um servidor de Typesense rodando em uma máquina não será tão custoso como achamos que será... Deveríamos apenas discutir como iria atualizar os dados dele.

Ao usar o Google também teremos uma "busca" sem atualização, o Google não vai indexar ao mesmo tempo que é criado um post, está agora discutindo em criar um sistema de feedback e isso saiu fora do assunto do tópico, que será a criação do sistema de busca.

Usando o Typesense tudo que precisaremos inicialmente é rodar ele em uma porta, indexar dados nele e fazer uma barra de busca no site chamando essa url que ele está rodando, nada mais. Não iria mexer em quase nada no código do TabNews, poderia reaproveitar componentes já feito.

Dei uma olhada e o Typesense consegue atualizar um dado, criar um novo dado:

Indexar um único documento Upsert um único documento

Com essas duas formas é possível adicionar ao banco de dados e ao mesmo tempo adicionar na busca.

aprendendofelipe commented 1 year ago

Oi @mthmcalixto, não precisa de permissão prévia para propor qualquer solução. 🤝

Se quiser implementar, no pior dos casos você irá aprender alguma coisa nova. Já no melhor dos casos, nós teremos um sistema de busca próprio para o TabNews 👍

Manda ver! 💪

mthmcalixto commented 1 year ago

Oi @mthmcalixto, não precisa de permissão prévia para propor qualquer solução. 🤝

Se quiser implementar, no pior dos casos você irá aprender alguma coisa nova. Já no melhor dos casos, nós teremos um sistema de busca próprio para o TabNews 👍

Manda ver! 💪

@aprendendofelipe Fiz alguns testes para demostrar que é possível e pode ser aprimorado se implementado.

https://youtu.be/UXFmMKRUmAw

Como pode olhar, tudo acontece em tempo real, como as consultas já estão gravadas, foram indexadas. Tudo é mais rápido e como eu disse acima, podemos usar Indexar um único documento sempre que precisar adicionar um novo post na busca e isso vai ocorrer em tempo real, também podemos Upsert um único documento para adicionar se aquele post é relevante ou não e colocar ele em "pesquisas quentes" vamos assim dizer.

O melhor é que mexeu apenas nos arquivos header, claro que precisa criar uma página "pesquisa" mas isso é a ação depois da busca, também não foi configurado API, após deixar o servidor do Typesense rodando, basta passar as informações dele e ele faz o resto usando um adaptador que eles mesmo fizeram para react.

Nesse exemplo meio que não iria existir a página "pesquisa" passando "=query", mas podemos também ao digitar ali aparecer os tópicos no lugar do conteúdo em tempo real.

Também já pensando em tags, achei interessante> https://github.com/filipedeschamps/tabnews.com.br/issues/1373#issuecomment-1519288852

aprendendofelipe commented 1 year ago

Turma, se puderem, deem uma opinada sobre como ficou o resultado do PR #1472

https://tabnews-git-searchbox-tabnews.vercel.app/

aprendendofelipe commented 1 year ago

Turma, considerando que o que foi implementado no PR #1472 (e #1475) está nos atendendo bem para a demanda atual (média de 300 pesquisas diárias), acredito que podemos dar essa issue como encerrada.

Acredito que futuramente haverá demanda de novas funcionalidades relacionadas, então o assunto pode voltar quando for necessário.

Muito obrigado aos que contribuíram com a discussão. 💪