有人可以指出我正确的方向吗?我确实没有编写代码的经验,但是我是一个快速学习的人。我并不是要说这很容易,但我希望有人能帮助我...
有人可以指出我正确的方向吗?我确实没有编写代码的经验,但是我是一个快速学习的人。我并不是要说这很容易,但我希望有人能帮助我...
Answers:
我为博客写过这篇文章,我曾经在...的时候回过头。它不再在网上出现,所以在这里!:
如何编写搜索引擎
在probolgger.net上的Darren Rowse正在进行有关“如何做”的小组写作项目。这是我经常阅读的少数几个博客之一,因此我想出为什么不写一些值得一读的改变书,而是我的标准暴力狂言,最终我威胁要把雨果·查韦斯刺入喉咙。
我决定写“如何编写搜索引擎”。我选择此主题有两个原因:
我的客户是一家规模庞大的在线零售商,因此我不会只在他们的网站上搜索整个网络,更具体地说,不是在他们的网站上搜索产品。但是,可以使用相同的技术来编写用于搜索Internet的更复杂的技术。我知道这不是一个技术博客,所以我不会太深入地介绍技术知识,也不会讨论硬件,处理能力要求或Web爬网。
我使用的是一种非常简单的技术,我的表(tblKeywords)具有三个字段:
我要做的第一件事是从任何相关的地方收集单个单词。对于我的客户,我会说产品表。特别是从字段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”之类的毫无价值的关键字。这并不解决搜索关键短语的问题,但是如果您可以弄清楚它们的开始和结束位置,则可以对短语使用类似的系统。
搜索引擎是基于Web爬虫构建的,您需要弄清楚如何构建这些吸盘中的一个,然后才能开发网站来显示其结果(您需要快速,高效的数据库)。