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


9

Alguém pode me apontar na direção certa? Realmente não tenho experiência em escrever código, mas sou um aprendiz rápido. Não estou tentando dizer que será fácil, mas espero que alguém possa me ajudar ...


6
Se você não tem experiência em escrever código, que tal aprender a codificar primeiro? Construir um mecanismo de pesquisa é meio que um exagero para alguém novo em programação.
Terence Ponce

3
Como diz Terence, não é algo para quem não conhece a programação. Qualquer mecanismo de pesquisa que seja bom tende a ser um trabalho bastante complicado; há uma razão pela qual o Google é tão grande que faz uma tarefa muito difícil bastante bem. Mesmo programadores experientes tendem a preferir usar algo pré-construído. Se você der uma idéia do que você deseja, talvez possamos indicar a direção certa.
Orbling

2
Comece com um projeto menor. Construir um mecanismo de pesquisa envolve uma quantidade enorme de código. E como você coleta todos os dados para o seu mecanismo de pesquisa? Você precisará de muito mais código e uma infraestrutura enorme. Realmente, comece em projetos menores e trabalhe, ou você ficará frustrado.
James

11
Este livro me ajudou a entender o que os motores de busca são e como eles são construídos: nlp.stanford.edu/IR-book
devnull

Respostas:


16

Eu escrevi isso para um blog que eu costumava voltar quando ... não está mais na web então ... aqui está! :

Como escrever um mecanismo de pesquisa

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

Eu decidi escrever "Como escrever um mecanismo de pesquisa". Eu escolhi este tópico por dois motivos:

  1. Não há muita informação boa sobre isso na web.
  2. Atualmente, estou escrevendo um para um de meus clientes.

Meu cliente é um varejista on-line de tamanho significativo; portanto, não estou pesquisando na web apenas o site, mais especificamente apenas os produtos à venda no 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, por isso não vou me aprofundar nos detalhes técnicos, nem discutirei requisitos de potência de processamento de hardware ou rastreamento na Web.

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

  1. Itemid (se você estiver fazendo uma pesquisa na web, isso seria URL)
  2. KeyWord (palavra-chave indexada)
  3. Peso (esse é o valor numérico de 1 a 100, quanto maior esse 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, puxarei as palavras da tabela de produtos. Especificamente nos campos Itemid, ItemName, ItemShortDescription, ItemLongDescription, Fabricante, ManufacturerSKU, Category1, Category2, Category3 ect. Se você estiver indexando páginas da Web, poderá extrair dados do texto da página, título da página, URL ou links em outras páginas que apontam 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 de 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 ItemLongDescription pode ter um peso de 5. Se você estiver indexando páginas da Web, as palavras do título da página pode ter um peso de 75 enquanto uma palavra em negrito no 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 local, você adicionará o peso para cada vez ocorre. Por exemplo, se a palavra "Camisa" vier de dois lugares para ItemId = 12345, o ItemName (peso de 25) e aparecer duas vezes em ItemLongDescription (Peso de 5 x2 = 10), a palavra "camisa" terá um peso total de 35 para ItemId = 12345.

Se alguém fizer uma pesquisa por "camisa rosa", procuro na minha tabela todas as instâncias das palavras "Rosa" ou "Camisa" e Totalizar os pesos. Mostrando os itens com maior peso total na parte superior.

SQL:

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

Então, aqui está, um mecanismo de pesquisa básico (e rápido). Obviamente, há mais a fazer, como remover pontuação, código HTML e palavras-chave sem valor, como "e", "se", "ou". Isso não aborda a pesquisa de frases-chave, mas você pode usar um sistema semelhante para frases se conseguir descobrir onde elas começam e terminam.


obrigado boa resposta. o que você também sugeriria para agrupar produtos. Quero dizer, você tem cerca de 1 milhão de páginas de produtos rastreadas de sites diferentes. Você quer mesmo grupo de produtos em sites diferentes: programmers.stackexchange.com/questions/134292/...
MonsterMMORPG

@Monster - Que tal a combinação de \ SKU do fabricante do item?
9502 idiotas

Você também pode comprar (alugar) esses dados de empresas como Etilize
Morons

você pode explicar um pouco mais porque eu não entendi? Obrigado.
MonsterMMORPG

3
Uma resposta prática "ok". No entanto, isso ignora todo o campo de estudo, também conhecido como "Recuperação de Informação". Em termos de "apontar na direção certa", a RI teria sido melhor em minha mente.
Darknight

3

Os mecanismos de pesquisa são construídos sobre rastreadores da Web . Você precisará descobrir como criar um desses otários antes de desenvolver um site para exibir seus resultados (você precisará de um banco de dados rápido e eficiente).


3
Um mecanismo de pesquisa pode consumir a saída de um rastreador da Web, mas, caso contrário, eles têm muito pouco a ver um com o outro. Além disso, é improvável que um banco de dados rápido e eficiente da variedade SQL ajude muito nesse empreendimento. Os mecanismos de pesquisa geralmente são criados usando esquemas de indexação de arquivos invertidos, que não se encaixam no molde SQL.
Marcelo Cantos

@ Marcelo Cantos: A indexação invertida de arquivos parece complicada: -0 - Obrigado por ajudar a esclarecer minha resposta!
13131 Palbakulich


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.