全文检索

来源:互联网 发布:淘宝网的人工电话 编辑:程序博客网 时间:2024/04/25 22:14

[SQLSERVER]SQL中的全文检索(转邹建) 
实例演示在SQL中启用全文检索 
使用SQL SERVER 2000的全文检索功能 
SQL Server 2000 全文检索技术

全文检索语句主要有CONTAINS和FREETEXT。

CONTAINS:
CONTAINS语句的功能是在表的所有列或指定列中搜索:一个字或短语;一个字或短语的前缀;与一个字相近的另一个字;一个字的派生字;一个重复出现的字。

CONTAINS语句的语法格式为:

CONTAINS({column | *}), <contains_search_condition>)

其中,column是搜索列,使用“*”时说明对表中所有全文索引列进行搜索。
Contains_search_condition 说明CONTAINS语句的搜索内容,其语法格式为:

{<simple_term>|<prefix_term>|<proximity_term>|<generation_term>|<weighted_term>}[{{AND|AND NOT|OR}<contains_search_condition>}] [...n]

下面就simple_term和prefix_term参数做简要说明:

simple_term是CONTAINS语句所搜索的单字或短语,当搜索的是一个短语时,必须使用双引号作为定界符。其格式为:

{'word'|" phrase"}

prefix_term说明CONTAINS语句所搜索的字或短语前缀,其格式为:

{"word*" | "phrase*"}

例如,下面语句检索Book表的Title列和Notes列中包含“database”或“computer”字符串的图书名称及其注释信息:

select title, notes 
from book 
where contains(tilte, 'database'or contains(notes,'database'
or contains(title,'computer'or contains(notes,'computer'

FREETEXT

FREETEXT语句的功能是在一个表的所有列或指定列中搜索一个自由文本格式的字符串,并返回与该字符串匹配的数据行。所以,FREETEXT语句所执行的功能又称做自由式全文查询。

FREETEXT语句的语法格式为:FREETEXT({column | * },'freetext_string')

其中,column是被搜索列,使用“*”时说明对表中的所有全文索引列进行搜索。Freetext_string参数指出所搜索的自由文本格式字符串。

例如,下面语句使用FREETEXT语句搜索Book表中包含“工艺”和“机械”字符串的数据行,注意,SQL语名把字符串分成两个词搜索了:

select * 
from trade 
where freetext(*'工艺 机械'

全文搜索SQL Server提供的Search服务外,还有Microsoft Indexing Services 和 第三方的搜索组件。 

关于Index Service下面的文章值得一看:
使用Microsoft Indexing Services开发网站全文检索配置说明 

使用Microsoft Indexing Services开发网站全文检索配置说明
 
本文的网站的全文检索功能是基于Microsoft Indexing Services索引服务。
为了使网站全文检索正常、安全的工作,需要进行一些设置,以下详细说明配置过程。
说明:本文档描述的配置说明是基于Microsoft Windows Server 2003 Enterprise Edition操作系统,在Microsoft Windows Server 2000下的配置基本相同。
1、             安装索引服务
如果Web服务器上已经安装了Microsoft Indexing Service(索引服务),那么可以跳过本步骤。
是否安装索引服务可以在“控制面板”à“计算机管理”à“服务”,查看列出的服务列表中是否有“Indexing Service”服务,如果有该服务,那么就是已经安装了该服务,不需要再次安装,如果没有,那么请按照下列步骤安装:
a)         启动“控制面板”à“添加或删除程序”,在添加删除程序界面中,选择“添加/删除Windows 组件(A)”,启动“Windows组件向导”,如下图1。
b)        选中“索引服务”,按“下一步”进入安装界面,按照提示一步一步完成安装。
2、             启用索引服务
如果已经安装了索引服务,它就和操作系统提供的众多服务一样,需要进行运行配置,主要配置服务的运行方式。
选择桌面上的“我的电脑”à“管理”,或者“控制面板”à“管理工具”à“计算机管理”,打开计算机管理的管理控制台,如下图2所示
a)         在左边控制台树中选择“服务”,右边的窗口中就显示出操作系统中已经安装的所有服务。
b)        选中“Indexing Service”,双击打开属性窗口,对Indexing Service的属性进行配置,如下图3,在“常规”标签中,将“启用类型(E):”修改为“自动”,然后按“启动”按钮,启动该服务,最后按“应用”按钮,使修改的设置生效。
 
3、             启用Web服务器索引
在安装配置完毕服务器中的WEB服务以后,需要将网站的被索引功能开启,否则即使安装了系统的Indexing Service,那么也不能对网站进行全文索引,也就不能进行全文检索。
a)         允许默认Web服务器索引
选择“控制面板”à“管理工具”à“计算机管理”,打开计算机管理的管理控制台,在左边的控制台树中选择并展开“Internet信息服务(IIS)管理器”项目,如下图4。
选择“默认网站”,点击鼠标右键,选择“属性”,进行默认网站的属性配置,如下图5。在“主目录”标签中,将“索引资源”复选框选中,表示允许Indexing Service对网站中的文件内容进行索引。
4、             索引服务配置
a)        索引服务属性
选择“控制面板”à“管理工具”à“计算机管理”,打开计算机管理控制台,在左边的控制台树中展开“服务和应用程序”节点,可以看到“索引服务”项目,如下图所示:
在索引服务下可以看到已经存在两个默认的编目:System和Web,其中System是对系统中文件的索引编目,而Web是对系统中默认Web站点的索引编目。右边窗口中显示当前两个编目的一些基本属性和状态,例如Web编目存放的位置是c:/inetpub,状态为已启动等。

选择“Web”编目,选择鼠标右键“属性”菜单,进行Web编目的属性配置,见下图,选择“跟踪”标签,使得配置与图中一致

选择“生成”标签,配置如下图,使得配置信息与图中一致。最后点击“应用”按钮,使得配置更改生效。

b)        包含需要索引的网站目录
选择“Web”编目下的“目录”,可以看到在该编目中包含的和排除在外的目录和文件,如下图所示:
其中c:/inetpub/wwwroot是默认网站所在的目录,它被包含在索引中。“包括在编目中”一栏为“是”的目录都会被Indexing Service索引,以备检索使用。
c)         排除不需要索引的目录
由于安全等原因,网站中总会有一些目录或文件不需要被索引,在本网站中后台管理目录(admin)下的所有文件都不能够被索引,以免泄漏重要信息。添加或者排除索引目录的方式为:
在右边窗口的空白地方点击鼠标右键,选择“新建”à“目录”


 

 

“路径”是需要包含或排除在索引中的目录,可是输入或使用“浏览”按钮进行选择路径;“别名”不需要输入;如果路径需要包含在索引中,则“包含在索引中吗?”选项必须为“是”,如果该目录需要被排除在索引中,那么必须选择“否”。按此方法添加所有需要包含或排除的目录。
d)        排除不需要索引的文档
网站中除了某些目录不需要被索引外,还可能存在某些类型的文档不需要被索引的情况,在本网站中,*.js,*.config,*.txt,*.xml以及所有图片文件是不需要被索引的,因此需要排除这些类型的文件,一方面提高系统的安全性(.config包含网站配置信息,xml文件包含用户菜单信息),一方面提高检索性能。
文件的排除方法与目录的排除方法不一样,不能在管理控制台中进行排序,需要编辑系统注册表,因此操作一定要谨慎,否则错误操作可能造成系统的崩溃。
在“开始”菜单中,选择“运行”,在运行窗口中输入regedit,启动注册表编辑器



 
查看注册表键值
HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/ContentIndex/Catalogs/Web/Scopes
在右边窗口空白处点击鼠标右键,选择“新建”à“字符串值”,见下图

在名称列表栏中输入“
按此方法添加所有需要排除的文件类型,即完成了排除文件类型的工作,如果要删除某类型文件的配置,直接删除该键值即可。
5、             索引服务配置生效
在进行以上任何一个配置以后,Indexing Service服务不会自动生效,即不会采用用户的最新配置信息重新索引,因此,为了确保使得索引服务按照我们设定的方式进行索引,需要人工干预,使得索引生效。
提醒:该操作最好在索引服务的所有配置都完毕以后进行。
1)        停止索引服务
首先,选择“控制面板”à“管理工具”à“计算机管理”,打开计算机管理控制台,在左边的控制台树中展开“服务和应用程序”节点,选择“索引服务”项目,点击控制台上面的工具栏中的“停止”按钮,停止索引服务,或者选择“索引服务”,点击鼠标右键,选择“所有任务”à“停止”来停止索引服务,或者在“服务”管理控制台中的服务列表中选择Indexing Service服务并停止。
2)        删除现有编目
前面我们提到过,Web编目的编目信息保存在c:/Inetpub目录下(不同的系统和配置可能不同,需要查看得到确定的目录),具体内容保存在该目录下的一个隐藏目录Catalog.wci中,删除该目录。
3)        重新启动索引服务
按照停止服务相同的方式,重新启动索引服务,这样索引服务将按照现有的配置信息重新对Web编目进行索引。
*.xml”等文件类型扩展名,再双击该名称,进行编辑字符串,在数值数据中输入“,,4”(两个半角逗号和数字4),其中数字为4表示排除该类型的文件,数字为3表示包含该类型的文件。
9
8
7
6
5
4
3
2
1
原创粉丝点击