欢迎来到天天文库
浏览记录
ID:26876514
大小:1.15 MB
页数:32页
时间:2018-11-29
《aspnet电子商务开发实战-8-搜索目录》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第8章搜索目录本章内容分析商品目录的不同搜索方法基于SQLServer的FULLTEXT引擎开发一个搜索引擎编写能与“实现搜索功能”的存储过程交互的数据层与业务层代码创建目录搜索功能的用户界面8.1选择搜索目录的方法基本思路可视化部分:提供一个TextBox控件,让访问者输入想要搜索的内容访问者输入的文本,可以通过下面几种方式进行搜索:精确匹配:如果访问者输入整个短语,那它将作为一个整体在数据库中搜索,不单独搜索分离出来的独立单词全单词搜索:把访问者输入的整个短语分离成独立的单词,搜索包含每个单词的商品,此时,单词在短语中的顺序就不再重要了任一单词:商品必须至少包含所有输入单词中的一
2、个本项目将支持任一单词与全单词两种搜索模式搜索框的设计:匹配的商品信息的显示:把搜索结果显示在Web用户控件Product.ascx中8.2教数据库自己搜索在数据库中,主要有两种实现搜索的方法SQLServer全文搜索功能:该功能可以实现高级的关键字搜索,诸如使用布尔运算符(AND,ANDNOT和OR)搜索,搜索单词变体,如复数、各种动词时态和形式相近的词等。另外,全文搜索功能也可以根据评级来排序结果,把最匹配的结果放在最前面。定制搜索方法(需使用存储过程、用户自定义函数及勇于尝试的精神)本项目中,将使用全文搜索方法在数据库中快速搜索数据,使用索引可以提高搜索速度,然而索引一般是建立
3、在数字型或长度比较短的文本型字段上的,比如说编号、姓名等字段,如果建立在长度比较长的文本型字段上,更新索引将会花销很多的时间。如在文章内容字段里用like语句搜索一个关键字,当数据表里的内容很多时,这个时间可能会让人难以忍受。在SQLServer中提供了一种名为全文索引的技术,可以大大提高从长字符串里搜索数据的速度全文索引与普通的索引不同,普通的索引是以B-tree结构来维护的,而全文索引是一种特殊类型的基于标记的功能性索引,是由MicrosoftSQLServer全文引擎服务创建和维护的。使用全文索引可以快速、灵活地为存储在SQLServer数据库中的文本数据创建基于关键字查询的索
4、引,与like语句不同,like语句的搜索是适用于字符模式的查询,而全文索引是根据特定语言的规则对词和短语的搜索,是针对语言的搜索。在对大量的文本数据进行查询时,全文索引可以大大地提高查询的性能,如对于几百万条记录的文本数据进行like查询可能要花几分钟才能返回结果,而使用全文索引则只要几秒钟甚至更少的时间就可以返回结果了。SQLServerFullTextSearch服务由两个部分组件支持:一个是MicrosoftFull-TextEngineforSQLServer(MSFTESQL),也就是SQLServer全文搜索引擎;另一个是MicrosoftFull-TextEngine
5、FilterDeamon(MSFTEFD),也就是全文搜索引擎过滤器。MicrosoftFull-TextEngineforSQLServer的作用是填充全文索引、管理全文索引和全文目录、帮助对SQLServer数据库中的数据表进行全文搜索。MicrosoftFull-TextEngineFilterDeamon包含筛选器、协议处理程序和断字符三个组件,其作用是负责从数据表中访问和筛选数据以及进行断字和词干分析。其中,筛选器的作用是从文档中提取文本信息,并将非文本信息和格式化信息(如换行符、字体大小等信息)删除,然后生成文本字符串和属性的对应,并将它们传递给索引引擎;协议处理程序用于
6、从指定数据库中的表内访问数据;断字符用于在查询或抓取的文档中确定字符边界位置。设置完全文索引并填充完毕之后,就可以通过全文搜索来查询数据了。使用全文搜索来查询数据所用到的T-SQL语句也是SELECT语句,只是在设置查询条件时和一般的SELECT语句的查询条件设置有些不同。在T-SQL语言中,可以在SELECT语句的WHERE子句里设置全文搜索的查询条件,也可以在FROM子句里设置查询条件,此时将返回结果作为FROM子句中的表格来使用如果要在WHERE子句里设置全文搜索的查询条件,可以使用CONTAINS和FREETEXT两个谓词;如果要在FROM子句里设置全文搜索的查询条件,可以使
7、用CONTAINSTABLE和FREETEXTTABLE两个行集值函数其中常用的参数为:column_name:字段名column_list:字段名列表*:所有字段LANGUAGElanguage_term:用于设置查询时所用的语言。例如在image字段里可能会存储了多种语言的文档,该参数允许用户指定搜索使用的语言,从而提高匹配率。INFLECTIONAL:用于指定使用与语言相关的词干分析器。词干分析器用于根据每种具体语言的判断词干。THESAURUS:用
此文档下载收益归作者所有