百度、 谷歌就是典型的全文搜索引擎。它们都是通过从互联网上提取的各个网站的信息而建立的数据库中,检索与用户查询条件匹配的相关记录,然后按一定的排列顺序将结果返回给用户。
1、简单查询。在搜索引擎中输入关键词,然后点击“搜索”就行了,系统很快会返回查询结果,这是最简单的查询方法,使用方便,但是查询的结果却不准确,可能包含着许多无用的信息。
2、使用双引号用(" ")。给要查询的关键词加上双引号(半角,以下要加的其它符号同此),可以实现精确的查询,这种方法要求查询结果要精确匹配,不包括演变形式。例如在搜索引擎的文字框中输入“电传”,它就会返回网页中有“电传”这个关键字的网址,而不会返回诸如“电话传真”之类网页。
3、使用加号(+)。在关键词的前面使用加号,也就等于告诉搜索引擎该单词必须出现在搜索结果中的网页上,例如,在搜索引擎中输入“+电脑+电话+传真”就表示要查找的内容必须要同时包含“电脑、电话、传真”这三个关键词。
4、使用减号(-)。在关键词的前面使用减号,也就意味着在查询结果中不能出现该关键词,例如,在搜索引擎中输入“电视台-中央电视台”,它就表示最后的查询结果中一定不包含“中央电视台”。
5、使用通配符(*和?)。通配符包括星号(*)和问号(?),前者表示匹配的数量不受限制,后者匹配的字符数要受到限制,主要用在英文搜索引擎中。例如输入“computer*”,就可以找到“computer、computers、computerised、computerized”等单词,而输入“comp?ter”,则只能找到“computer、compater、compete 等单词。
参考技术D
全文索引
全文搜索引擎是名副其实的搜索引擎,国外代表有Google,国内则有著名的百度搜索。它们从互联网提取各个网站的信息(以网页文字为主),建立起数据库,并能检索与用户查询条件相匹配的记录,按一定的排列顺序返回结果。
根据搜索结果来源的不同,全文搜索引擎可分为两类,一类拥有自己的检索程序(Indexer),俗称“蜘蛛”(Spider)程序或“机器人”(Robot)程序,能自建网页数据库,搜索结果直接从自身的数据库中调用,上面提到的Google和百度就属于此类;另一类则是租用其他搜索引擎的数据库,并按自定的格式排列搜索结果,如Lycos搜索引擎。
2.目录索引
目录索引虽然有搜索功能,但严格意义上不能称为真正的搜索引擎,只是按目录分类的网站链接列表而已。用户完全可以按照分类目录找到所需要的信息,不依靠关键词(Keywords)进行查询。目录索引中最具代表性的莫过于大名鼎鼎的Yahoo!、新浪分类目录搜索。
3.元搜索引擎
元搜索引擎(META Search Engine)接受用户查询请求后,同时在多个搜索引擎上搜索,并将结果返回给用户。著名的元搜索引擎有InfoSpace、Dogpile、Vivisimo等,中文元搜索引擎中具代表性的是搜星搜索引擎。在搜索结果排列方面,有的直接按来源排列搜索结果,如Dogpile;有的则按自定的规则将结果重新排列组合,如Vivisimo。
其他非主流搜索引擎形式
(1)集合式搜索引擎:该搜索引擎类似元搜索引擎,区别在于它并非同时调用多个搜索引擎进行搜索,而是由用户从提供的若干搜索引擎中选择,如HotBot在2002年底推出的搜索引擎。
(2)门户搜索引擎:AOL Search、MSN Search等虽然提供搜索服务,但自身既没有分类目录也没有网页数据库,其搜索结果完全来自其他搜索引擎。
(3)免费链接列表(Free For All Links,简称FFA):一般只简单地滚动链接条目,少部分有简单的分类目录,不过规模要比Yahoo!等目录索引小很多。
【工作原理】
1、抓取网页
每个独立的搜索引擎都有自己的网页抓取程序(spider)。Spider顺着网页中的超链接,连续地抓取网页。由于互联网中超链接的应用很普遍,理论上,从一定范围的网页出发,就能搜集到绝大多数的网页。
2、处理网页
搜索引擎抓到网页后,还要做大量的预处理工作,才能提供检索服务。其中,最重要的就是提取关键词,建立索引文件。其他还包括去除重复网页、分析超链接、计算网页的重要度。
3、提供检索服务
用户输入关键词进行检索,搜索引擎从索引数据库中找到匹配该关键词的网页;为了用户便于判断,除了网页标题和URL外,还会提供一段来自网页的摘要以及其他信息。
在mysql见表的时候,会遇到选择存储引擎:MyISAM和InnoDB。究竟用哪种存储引擎好呢?
1、MyISAM:表锁;支持全文索引;读并发性能较好。
2、InnoDB:行锁;支持事务,支持外键;写并发性能较好。
实际上,现在大多数的公司里,mysql的规定都是使用InnoDB作为默认存储引擎,除了支持事务和行锁是比较重要的两个原因外,其实MyISAM在实际应用场景中意义也不大,并且一个重要原因是,官方支持力度大。oracle很早就收购了InnoDB,后面又收购了mysql,现在重点发展InnoDB引擎。
另外,MyISAM表锁在并发写操作多时会严重影响读操作。
那InnoDB的在又是怎么弥补读并发和索引的问题呢?
索引现在不应该用mysql本身来解决,应该使用第三方的软件,比如:ES,Sphinx;
至于读表的性能,从架构和缓存等方面完全可以解决,并且技术解决方案非常成熟。
so,创建mysql数据表请毫不犹豫选择:InnoDB。