Construir um motor de busca web [fechado]
-
02-07-2019 - |
Pergunta
Eu sempre fui interessado em desenvolver um motor de busca da web. O que é um bom lugar para começar? Já ouvi falar de Lucene, mas eu não sou um cara de Java grande. Qualquer outra bons recursos ou projetos de código aberto?
Eu entendo que é um enorme sub-taking, mas isso é parte do apelo. Eu não estou olhando para criar o próximo Google, apenas algo que eu possa usar para pesquisar um sub-conjunto de sites que eu poderia estar interessado.
Solução
Existem várias partes para um motor de busca. Em termos gerais, de uma forma irremediavelmente geral (pessoal, à vontade para editar se você sentir que você pode adicionar descrições melhores, links, etc.):
-
O rastreador . Esta é a parte que atravessa a web, agarra as páginas e armazena informações sobre eles em algum armazenamento de dados central. Além do próprio texto, você vai querer coisas como o tempo que você acessou, etc. O rastreador precisa ser inteligente o suficiente para saber quantas vezes para acertar certos domínios, a obedecer a convenção robots.txt, etc.
-
O analisador . Isto lê os dados buscados pelo rastreador, analisa-lo, salva tudo o que os metadados ele precisa, joga fora lixo e, possivelmente, faz sugestões para o rastreador sobre o que buscar próxima vez.
-
O indexador . Lê o material do analisador analisado, e cria índices invertidos para os termos encontrados nas páginas da web. Ela pode ser tão inteligente como você quer que seja -. Aplicar técnicas de PNL para fazer índices de conceitos, cross-link de coisas, jogar em sinônimos, etc
-
O mecanismo de ranking . Dado alguns milhares de URLs correspondentes "maçã", como você decidir qual resultado é o melhor? Jut o índice não dar-lhe essa informação. Você precisa analisar o texto, a estrutura de links, e quaisquer outras peças que você quer olhar, e criar algumas pontuações. Isso pode ser feito totalmente on the fly (que é muito difícil), ou com base em algumas noções pré-computados de "especialistas" (ver PageRank, etc).
-
O front-end . Algo precisa receber consultas de usuários, bateu o motor central, e responder; este algo precisa ser esperto sobre o cache de resultados, possivelmente mistura em resultados de outras fontes, etc. Ela tem seu próprio conjunto de problemas.
O meu conselho - escolher qual desses interesses você mais, baixe qualquer outro projeto de código aberto lá fora, puxe o pouco que faz uma das tarefas acima Lucene ou Xapian ou, e tentar substituí-lo. Esperemos que, com algo melhor :-).
Alguns links que podem ser úteis: "Agile web-crawler", um jornal da Estónia (em inglês) motor Esfinge Pesquisa , uma indexação e pesquisa api. Projetado para grandes bancos de dados, mas modular e aberto. " Information Retrieval, um livro de texto sobre IR de Manning et ai . Boa visão geral de como os índices são construídos, várias questões que surgem, bem como alguma discussão sobre o rastreamento, etc. versão gratuita on-line (por agora)!
Outras dicas
Xapian é outra opção para você. Ouvi dizer que ele cresce melhor do que algumas implementações de Lucene.
Confira Nutch , é escrito pelo mesmo cara que criou Lucene ( Doug Cutting ).
Parece-me que a maior parte é a indexação de sites. Fazer robôs para vasculhar a internet e analisar seus conteúdos.
Um amigo e eu estávamos falando sobre o quão incrível o Google e outros motores de busca tem que ser sob o capô. Milhões de resultado em menos de meio segundo? Louco. Eu acho que eles poderiam ter resultado de buscas predefinidas para comumente procurou itens.
edit: Este aparência do sítio bastante interessante.
Gostaria de começar com um projeto existente, como o motor de busca de código aberto da Wikia.
[O meu entendimento é que o projeto Wikia Search terminou. No entanto eu acho que se envolver com um projeto de código aberto existente é uma boa maneira de aliviar em uma empresa deste tamanho.]
Se você está interessado em aprender sobre a teoria por trás de recuperação de informação e alguns dos detalhes técnicos por trás implementação de motores de busca, eu posso recomendar o livro Gerenciando Gigabytes por Ian Witten, Alistair Moffat e Tim C. Bell. (. Divulgação: Alistair Moffat era meu supervisor da universidade) Embora seja um pouco datado agora (a primeira edição saiu em 1994 ea segunda em 1999 - o que é tão duro sobre gestão gigabytes agora?), A teoria subjacente ainda é sólida e que é uma ótima introdução para ambos indexação eo uso de compressão em indexação e sistemas de recuperação.
Estou interessado em Search Engine também. I recomendado tanto Apache Hadoop MapReduce e Apache Lucene. Ficando mais rápido por Hadoop Cluster é o melhor caminho.
Existem portas de Lucene. Zend ter um disponíveis gratuitamente. Ter um olhar para este tutorial rápido: http://devzone.zend.com/node/ view / id / 91
Aqui está uma abordagem ligeiramente diferente, se você não está tão interessado na programação do mesmo, mas mais interessado nos resultados: considerar a construção lo usando Google Custom Search Engine API.
Vantagens:
- Google faz todo o trabalho pesado para você
- UI Familiar e do comportamento para seus usuários
- Pode ter algo pronto e funcionando em questão de minutos
- Muitos dos recursos de personalização
Desvantagens:
- Você não está escrevendo código, de forma que nenhum oportunidade de aprendizagem lá
- Tudo o que você deseja pesquisar deve ser pública e no índice do Google já
- O seu resultado está vinculado a Google