Se eu quisesse criar um mecanismo de pesquisa, como começaria? [fechado]

Fechado . Esta questão precisa ser mais focada . Atualmente não está aceitando respostas.

Comentários

  • Se você não ' não tem nenhuma experiência em escrever código, que tal aprender a codificar primeiro? Construir um mecanismo de busca é meio que um exagero para alguém novo em programação.
  • Como Terence diz, não é algo para quem é novo em programação. Qualquer mecanismo de busca que seja bom tende a ser um trabalho bastante complicado, há uma razão pela qual o Google é tão grande, eles fazem uma tarefa muito difícil muito bem. Mesmo programadores experientes tendem a preferir usar algo pré-construído. Se você der uma ideia do que deseja, talvez possamos indicar a direção certa.
  • Comece com um projeto menor. Construir um Search Engine envolve uma grande quantidade de código. E como você reúne todos os dados para seu mecanismo de pesquisa? Você ' precisará de muito mais código e de uma infraestrutura massiva. Realmente, comece em projetos menores e vá aumentando ou você só vai ficar frustrado.
  • Este livro me ajudou a entender o que são os mecanismos de pesquisa e como são construídos: nlp.stanford.edu/IR-book

Resposta

Escrevi isso para um blog eu costumava ter um caminho de volta quando …. não está mais na web então .. aqui está! :

Como escrever um mecanismo de pesquisa

Darren Rowse em probolgger.net está realizando um Projeto de Redação em Grupo sobre qualquer coisa “Como fazer”. Este é um dos poucos blogs que leio regularmente, então eu acho por que não escrever algo que valha a pena ler para uma mudança, em vez do meu discurso violento padrão onde acabarei ameaçando esfaquear Hugo Chaves na garganta.

Decidi escrever “Como escrever um mecanismo de pesquisa”. Escolhi este tópico por dois motivos:

  1. Não há muitas informações boas sobre isso na web.
  2. No momento, estou escrevendo um para um de meus clientes.

Meu cliente é um varejista on-line de tamanho significativo, então não estou pesquisando na web inteira apenas em seu site, mais especificamente apenas no produtos à venda em seu site. No entanto, as mesmas técnicas podem ser usadas para escrever uma mais complexa usada para pesquisar na internet. Sei que este não é um blog de tecnologia, então não vou me aprofundar muito nos detalhes técnicos, nem discutirei os requisitos de hardware \ poder de processamento ou rastreamento da Web.

Estou usando uma técnica bastante simples , Eu tenho a tabela (tblKeywords) com três campos:

  1. Itemid (se você estiver fazendo uma pesquisa na web, este seria o URL)
  2. KeyWord (palavra-chave indexada)
  3. Peso (este é um valor numérico de 1-100 quanto maior for este número, mais significativo (peso) a palavra-chave carrega) * PK = ItemID + KeyWord

A primeira coisa que faço é coletar palavras individuais de qualquer lugar que seja relevante. Para o meu cliente vou puxar palavras da tabela de produtos. Especificamente nos campos Itemid, ItemName, ItemShortDescription, ItemLongDescription, Fabricante, ManufacturerSKU, Categoria1, Categoria2, Categoria3 ect. Se estiver indexando páginas da web, você pode obter dados do texto da página, título da página, URL ou links em outras páginas que direcionam para a página que está sendo indexada.

O valor do peso é determinado pela origem da palavra-chave . Por exemplo, no meu caso, o SKU da Fabricação do Item teria um peso de 100, enquanto uma palavra do nome do Item pode ter um peso de 25. Uma palavra da Descrição ItemLong pode ter um peso de 5. Se você estiver indexando páginas da web, as palavras do título da página podem ter um peso de 75, enquanto uma palavra em negrito do texto da página pode ter um peso de 10. Se uma palavra for repetida em mais de uma vez ou \ e em mais de um lugar, você adicionaria o peso para cada vez que ocorre. Por exemplo, se a palavra “camisa” vier de dois lugares para ItemId = 12345, The ItemName (peso de 25) e aparecer duas vezes em ItemLongDescription (peso de 5 x 2 = 10), a palavra “camisa” teria peso total de 35 para ItemId = 12345.

Se alguém fizer uma pesquisa por “camisa rosa”, eu procuro na minha mesa todas as ocorrências das palavras “Rosa” ou “Camisa” e Totalizo os pesos. Mostrando os itens com maior peso total no topo.

SQL:

Select Itemid, sum(weight) as totWeight from tblKeywords group by itemId having keyword in ("pink","shirt") 

Então, aqui está, um básico (e rápido) motor de busca. Claro que há mais a fazer, como eliminar a pontuação, o código HTML e palavras-chave inúteis como “e”, “se”, “ou”. Isso não aborda a busca por frases-chave, mas você pode usar um sistema semelhante para frases se puder descobrir onde elas começam e terminam.

Comentários

  • obrigado, boa resposta. o que você também sugeriria para agrupar produtos. Quer dizer, você tem cerca de 1 milhão de páginas de produtos rastreados em diferentes sites. você deseja agrupar os mesmos produtos em diferentes sites: programmers.stackexchange.com/questions/134292/…
  • @Monster – Que tal a Combinação ' s Fabricante \ SKU do item?
  • Você também pode comprar (alugar) esses dados de empresas como Etilize
  • você pode explicar um pouco mais porque eu não entendi. Obrigado.
  • Uma " ok " resposta prática. No entanto, isso ignora todo o campo de estudo, também conhecido como " Recuperação de informações ". Em termos de " Apontar na direção certa " IR teria sido melhor para mim.

Resposta

O rascunho distribuído gratuitamente de Introdução à recuperação de informações vai seja o seu principal material de referência. Ele lida com a pesquisa (recuperação de informações) do nível básico ao avançado.

Resposta

Os mecanismos de pesquisa são baseados em web crawlers , você precisará descobrir como construir um desses otários antes de desenvolver um site para exibir seus resultados (você precisará de um banco de dados rápido e eficiente para vá com ele).

Comentários

  • Um mecanismo de pesquisa pode consumir a saída de um rastreador da web, mas, por outro lado, eles têm muito pouco a ver com cada um outro. Além disso, um banco de dados rápido e eficiente do tipo SQL provavelmente não ajudará muito nessa tarefa. Os motores de busca são geralmente construídos usando esquemas de indexação de arquivo invertido, que não ' se encaixam no molde SQL.
  • @Marcelo Cantos: A indexação de arquivo invertido parece complicada: -0 – Obrigado por ajudar a esclarecer minha resposta!

Resposta

Construindo um mecanismo de busca

Este é um curso introdutório ao CS que começará no dia 20, sugiro que você dê uma olhada, é oferecido gratuitamente .

Comentários

  • Sebastian Thrun também está intimamente associado ao Google.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *