本文通过搜索结果归纳分析+切词通用算法分析的方式对百度预处理阶段的查询处理和中文分词两项技术进行了阐述、总结,如果你对数据结构、算法有一定了解的话,理解起来会相对容易些;个人感觉,得出正向最大匹配算法不够准确,无论是专用词典还是普通词典里的词,都是有不同权重的,这根搜索频率应该有一定关系,基于这点,在出现多个专用词典里的词时,是需要采用双向最大匹配算法来检测到底哪一个专有词汇应该先被切出来,当然,这是个人猜想,有待考究。 理解分词技术对SEO工作具有极大意义,可以从科学的角度来分析关键词,并构想关键词部署策略;如果正向最大匹配算法的结论是正确的,那基本上可以断定,切词后的分词的权重是按照正向排序的 我还想搞明白的是专用词典和普通词典,哪一个权重会更高? 查询处理以及分词技术 随着搜索经济的崛起,人们开始越加关注全球各大搜索引擎的性能、技术和日流量。作为企业,会根据搜索引擎的知名度以及日流量来选择是否要投放广告等;作为普通网民,会根据搜索引擎的性能和技术来选择自己喜欢的引擎查找资料;作为技术人员,会把有代表性的搜索引擎作为研究对象。搜索引擎经济的崛起,又一次向人们证明了网络所蕴藏的巨大商机。网络离开了搜索将只剩下空洞杂乱的数据,以及大量等待去费力挖掘的金矿。 但是,如何设计一个高效的搜索引擎?我们可以以百度所采取的技术手段来探讨如何设计一个实用的搜索引擎。搜索引擎涉及到许多技术点,比如查询处理,排序算法,页面抓取算法,CACHE机制,ANTI-SPAM等等。这些技术细节,作为商业公司的搜索引擎服务提供商比如百度,GOOGLE等是不会公之于众的。我们可以将现有的搜索引擎看作一个黑盒,通过向黑盒提交输入,判断黑盒返回的输出大致判断黑盒里面不为人知的技术细节。 查询处理与分词是一个中文搜索引擎必不可少的工作,而百度作为一个典型的中文搜索引擎一直强调其“中文处理”方面具有其它搜索引擎所不具有的关键技术和优势。那么我们就来看看百度到底采用了哪些所谓的核心技术。 我们分两个部分来讲述:查询处理/中文分词。 一、查询处理 用户向搜索引擎提交查询,搜索引擎一般在接受到用户查询后要做一些处理,然后在索引数据库里面提取相关的信息。那么百度在接受到用户查询后做了些什么工作呢? 1、假设用户提交了不只一个查询串,比如“信息检索 理论 工具”。那么搜索引擎首先做的是根据分隔符比如空格,标点符号,将查询串分割成若干子查询串,比如上面的查询就会被解析为:三个子字符串;这个道理简单,我们接着往下看。 2、假设提交的查询有重复的内容,搜索引擎怎么处理呢?比如查询“理论工具理论”,百度是将重复的字符串当作只出现过一次,也就是处理成等价的“理论工具”,而GOOGLE显然是没有进行归并,而是将重复查询子串的权重增大进行处理。那么是如何得出这个结论的呢?我们可以将“理论工具”提交给百度,返回341,000篇文档,大致看看第一页的返回内容。 OK。继续,我们提交查询“理论工具理论”,在看看返回结果,仍然是那么多返回文档,当然这个不能说明太多问题,那看看第一页返回结果的排序,看出来了吗?顺序完全没有变化,而 GOOGLE 则排序有些变动,这说明百度是将重复的查询归并成一个处理的,而且字符串之间的先后出现顺序基本不予考虑(GOOGLE是考虑了这个顺序关系的)。 3、假设提交的中文查询包含英文单词,搜索引擎是怎么处理的?比如查询”电影BT下载”,百度的方法是将中文字符串中的英文当作一个整体保留,并以此为断点将中文切分开,这样上述的查询就切为,不论中间的英文是否一个字典里能查到的单词也好,还是随机的字符也好,都会当作一个整体来对待。至于为什么,你用查询 “电影dfdfdf下载”看看结果就知道了。当然如果查询中包含数字,也是如此办理。 |