如果我想建立一个搜索引擎,我将如何开始?[关闭]


9

有人可以指出我正确的方向吗?我确实没有编写代码的经验,但是我是一个快速学习的人。我并不是要说这很容易,但我希望有人能帮助我...


6
如果您没有编写代码的经验,那么首先学习如何编写代码又如何呢?对于刚接触编程的人来说,构建搜索引擎实在是过大的选择。
Terence Ponce

3
正如Terence所说,对于编程新手来说,这不是什么。任何有好处的搜索引擎往往都是一件相当复杂的工作,有一个原因是Google如此庞大,他们做得非常艰巨。即使是经验丰富的程序员也倾向于使用预构建的东西。如果您对想要的目的有所了解,也许我们可以为您指明正确的方向。
2011年

2
从一个较小的项目开始。构建搜索引擎涉及大量代码。以及如何收集搜索引擎的所有数据?您将需要更多代码和庞大的基础架构。确实,请从较小的项目开始并继续工作,否则您会感到沮丧。
詹姆斯,

1
这本书帮助我了解了什么是搜索引擎以及它们是如何构建的:nlp.stanford.edu/IR-book
devnull 2012年

Answers:


16

我为博客写过这篇文章,我曾经在...的时候回过头。它不再在网上出现,所以在这里!:

如何编写搜索引擎

在probolgger.net上的Darren Rowse正在进行有关“如何做”的小组写作项目。这是我经常阅读的少数几个博客之一,因此我想出为什么不写一些值得一读的改变书,而是我的标准暴力狂言,最终我威胁要把雨果·查韦斯刺入喉咙。

我决定写“如何编写搜索引擎”。我选择此主题有两个原因:

  1. 网络上没有太多好的信息。
  2. 我目前正在为我的一位客户写一篇。

我的客户是一家规模庞大的在线零售商,因此我不会只在他们的网站上搜索整个网络,更具体地说,不是在他们的网站上搜索产品。但是,可以使用相同的技术来编写用于搜索Internet的更复杂的技术。我知道这不是一个技术博客,所以我不会太深入地介绍技术知识,也不会讨论硬件,处理能力要求或Web爬网。

我使用的是一种非常简单的技术,我的表(tblKeywords)具有三个字段:

  1. Itemid(如果您要进行网络搜索,则为URL)
  2. 关键字(索引关键字)
  3. 权重(这是1到100之间的数值,该数字越高,关键字所带的重要性(权重)就越大) * PK = ItemID + KeyWord

我要做的第一件事是从任何相关的地方收集单个单词。对于我的客户,我会说产品表。特别是从字段Itemid,ItemName,ItemShortDescription,ItemLongDescription,Manufacturer,ManufacturerSKU,Category1,Category2,Category3等字段中。如果要为网页建立索引,则可以从页面文本,页面标题,URL或链接回被索引页面的其他页面上的链接中提取数据。

权重值取决于关键字的来源。例如,在我的案例中,商品制造商的SKU的权重为100,而商品名称中的单词的权重为25。商品长度描述中的单词的权重为5。如果您正在索引网页,则这些单词来自页面标题的权重可能为75,而来自页面文本的粗体字的权重可能为10。如果一个单词在一个或多个位置重复,并且在多个位置重复,则每次的权重加起来它发生。例如,如果单词“ Shirt”来自ItemId = 12345的两个地方,则为ItemName(权重为25)并在ItemLongDescription中出现两次(权重为5 x2 = 10),则单词“ shirt”的ItemId总权重为35 = 12345。

如果有人搜索“粉红色衬衫”,我会在表中搜索单词“ Pink”或“ Shirt”和“ Total the weights”的所有实例。在顶部显示总重量最高的商品。

SQL:

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

因此,这里有一个基本(快速)的搜索引擎。当然,还有更多工作要做,例如去除标点符号,HTML代码以及诸如“ and”,“ if”,“ or”之类的毫无价值的关键字。这并不解决搜索关键短语的问题,但是如果您可以弄清楚它们的开始和结束位置,则可以对短语使用类似的系统。


谢谢你很好的答案。您还会对产品分组提出什么建议。我的意思是,您有大约100万个来自不同网站的已爬网产品页面。要在不同的网站相同组产品:programmers.stackexchange.com/questions/134292/...
MonsterMMORPG

@Monster-该商品的Manufacturer \ SKU组合如何?
Morons,2012年

您也可以从Etilize
Morons

您能再解释一下吗,因为我没有得到。谢谢。
MonsterMMORPG '02

3
一个“好的”实用答案。但是,这忽略了整个研究领域,也就是“信息检索”。就“指向正确的方向”而言,IR在我看来会更好。
黑暗之夜


3

搜索引擎是基于Web爬虫构建的,您需要弄清楚如何构建这些吸盘中的一个,然后才能开发网站来显示其结果(您需要快速,高效的数据库)。


3
搜索引擎可能会消耗Web搜寻器的输出,但否则它们之间几乎没有关系。而且,快速,高效的SQL种类的数据库不太可能在此方面大有帮助。搜索引擎通常使用倒排文件索引方案构建,这根本不适合SQL模式。
Marcelo Cantos

@Marcelo Cantos:倒排文件索引听起来很复杂:-0-感谢您帮助澄清我的答案!
palbakulich 2011年

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.