Como eu fiz um mecanismo de pesquisa para o Telegram

Era uma vez em uma galáxia distante, distante , quando as árvores eram grandes e a Internet pequena, não havia domínio dos mecanismos de busca. Eles começaram a aparecer e eram bastante simples e "burros". Um desenvolvimento significativo foi dado aos diretórios, onde, por tópicos, foram definidos quais sites nesta Internet são seus. Eu fui para a seção, encontrei um site, aproveite.

imagem

E então apareceram AltaVista, Google, Yahoo, Yandex, Aport, Rambler e outros. E agora, toda essa situação se repete com o Telegram, como me parece. Existem diretórios, mas quase não há pesquisa.
Obviamente, existe uma pesquisa no próprio Telegram, mas ele só funciona com os grupos, canais e correspondência que você já adicionou a si mesmo. Não há pesquisa global por grupos e canais.
E como ele não está lá, por que não fazê-lo, pensei? É que minhas mãos estão coçando há muito tempo para experimentar o Elasticsearch, e aqui a ocasião apareceu.

A idéia é simples - "sentar-se" no poder do telegrama e não fazer sua fazenda analisando canais e grupos. Para fazer isso, criamos um bot que simplesmente lê todas as mensagens do grupo e as adiciona ao índice no Elasticsearch. Bem, então já na interface da web ou através do bot, podemos pesquisar todos os grupos e canais onde esse bot está.

E já na fase de implementação, esse pensamento brilhante passou por algumas mudanças. Como se viu, você pode adicionar ao bot no canal apenas como administrador. E o administrador não pode ser negado todas as ações. Acontece que, para adicionar o bot de outra pessoa ao seu canal, ele precisa pelo menos permitir alguma coisa. E lá todas as permissões são bastante sensíveis. Então aqui tenho algumas dificuldades. I.e. é claro que é possível concordar com fé e convicção pessoal. E, por exemplo, "Alterar o perfil do canal" não é um privilégio terrível, mas a partir de uma posição sólida do canal, você também não deseja entregá-lo a ninguém. Então, aqui peço ajuda à comunidade - existe alguma maneira de contornar essas restrições?

Bem, pelo menos não houve problemas com grupos!

Não foi difícil criar um bot, com a pesquisa elástica eu também descobri rapidamente, levou vários dias. Mas houve alguns problemas com a pesquisa morfológica russa na versão mais recente do Elasticsearch. Eu tive que fumar manuais sobre o tópico de conectar dicionários russos de hunspell. O índice é bem simples. O texto da mensagem, o nome do canal / grupo, seu número, ID da mensagem e usuário são levados em consideração. Bem, eu fiz separadamente um índice onde as solicitações ao bot são adicionadas, para estatísticas.

Eu queria falar sobre o componente técnico do trabalho, mas percebi que eles já escreviam sobre escrever bots uma dúzia de vezes, sobre a pesquisa elástica em si também há muitos artigos e não tenho recursos de uso - apenas pesquisa em texto completo. Como trabalhar com elasticsearch a partir do php também parece simples - instalei-o no compositor e pronto.

Como resultado, o sistema acabou sendo muito simples, facilmente escalável e, espero, útil. É claro que agora apenas alguns grupos foram adicionados ao bot e você não deve contar com nenhuma pesquisa relevante.

Mas espero que os operadores de telegrama adicionem o bot aos seus grupos e que sua base aumente significativamente. Aqui está o bot @TelegaIndexBot , aqui está a interface da web tgindex.ru - bem-vindo!

Bem, é claro, críticas e outros desejos são bem-vindos.

O ps criou um grupo para "brincar". t.me/telegaindex - se você adicionar texto, ele será indexado pelo bot. Você pode realizar algumas experiências.

Source: https://habr.com/ru/post/pt484368/


All Articles