近年来,互联网基础资源增长迅猛,年增长率均超过38%,互联网最基础的功能即提供信息。目前互联网上的信息已是海量,搜索引擎则是网民在汪洋中搜寻信息的工具,是互联网上不可或缺的工具和基础应用之一。目前2.1亿网民中使用搜索引擎的比例是72.4%,即已有1.52亿人从搜索引擎获益,半年净增加3086万人。
网上购物和网上销售是互联网作为商务平台工具的重要体现。网民和商家可以通过互联网平台,各取所需,共同获益,是值得政府和社会大力倡导的网络应用。2007年12月,中国网民网络购物比例是22.1%,购物人数规模达到4640万。而美国2006年8月网上购物的比例则已经达到了71%[1]。
随着市场需求的增长,电子商务,娱乐等网站各自独特的信息搜索,将越来越普遍地应用于实际业务当中,其搜索主要是用来整合网站内部信息,使其以较为结构化的方式来展现给用户。
在目前各大门户搜索来看,主要采用的技术是基于java的全文索引工具包,和数据库全文索引。数据库全文索引,是基于数据库的一种索引方式,它与普通的索引不同,例如
Like “%搜索文字%”,这种方法在搜索具有大量文字的时候,往往会使cpu占用资源率达到100%,这样不仅会使UE下降,而且还会导致整个网站系统瘫痪,给网站运营带来具大负担。而数据库全文索引,它是基于物理文件的,具体来讲它就是在新建的一个文件上构建新的搜索数据文件,重新按照一定的结构排序,并且筛选了数据进行显示,但是在进行每次搜索的时候,都会进行数据库的查询,占用数据库资源,在数据发生变更的时候,必须要进行重建全文索引,才能达到预期的结果。 对于数据量大的搜索来说,可能会占据整整一个服务的资源,综合几点看来,数据库搜索在使用上有着局限性和不可用性。
构建数据库全文索引的步骤:
1. 判断全文检索组件是否安装
serverproperty("isFullTextinstalled")==1 判断数据库服务是否启用。
databaseproperty("nothord","isfulltextinstalled")==1 判断数据库索引是否启用
2. 构建全文检索
启用全文索引,EXECUTE sp_fulltext_database 'enable',
而Lucence检索则更胜一筹,Lucene的贡献者Doug Cutting是一位资深全文索引/检索专家,曾经是V-Twin搜索引擎(Apple的Copland操作系统的成就之一)的主要开发者,后在Excite担任高级系统架构设计师,目前从事于一些INTERNET底层架构的研究,他所贡献出的Lucene的目标是为各种中小型应用程序加入全文检索功能。
在Lucene里包含了如下这几部分,里可以比较一下数据库检索:如果是一个10,000条的数据库检索结果集,数据库是一定要把所有记录内容都取得以后再开始返回给应用结果集的。所以即使检索匹配总数很多,Lucene的结果集占用的内存空间也不会很多。
Lucene和其他一些全文检索系统/应用的比较:
|
Lucene |
其他开源全文检索系统 |
增量索引和批量索引 |
可以进行增量的索引(Append),可以对于大量数据进行批量索引,并且接口设计用于优化批量索引和小批量的增量索引。 |
很多系统只支持批量的索引,有时数据源有一点增加也需要重建索引。 |
数据源 |
Lucene没有定义具体的数据源,而是一个文档的结构,因此可以非常灵活的适应各种应用(只要前端有合适的转换器把数据源转换成相应结构), |
很多系统只针对网页,缺乏其他格式文档的灵活性。 |
索引内容抓取 |
Lucene的文档是由多个字段组成的,甚至可以控制那些字段需要进行索引,那些字段不需要索引,近一步索引的字段也分为需要分词和不需要分词的类型: |
缺乏通用性,往往将文档整个索引了 |
语言分析 |
通过语言分析器的不同扩展实现: |
缺乏通用接口实现 |
查询分析 |
通过查询分析接口的实现,可以定制自己的查询语法规则: |
|
并发访问 |
能够支持多用户的使用 |
|