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.

Foi útil?

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.):

  1. 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.

  2. 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.

  3. 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

  4. 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).

  5. 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.]

http://re.search.wikia.com/about/get_involved.html

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
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top