新手上路
例程可通过http://www.sybase.com/files/Technical_Documents/PanoramaRevGuide.zip下载 本文档中出现的SQL Anywhere 11在其它地方可能出现为SQL Anywhere Panorama。
安装SQL Anywhere 11: 1. 从SQL Anywhere 11 Beta网站上下载Panorama_Win32_Beta1074.exe文件,并解压缩至临时目录。 2. 运行setup.exe文件,并根据安装程序的指示进行安装。
SQL Anywhere 11例程 为了能帮助您更好地了解SQL Anywhere 11的新特性,我们组织了一系列例程作为在线文档的补充部分,并包含在PanoramaRevGuide.zip压缩文件中。当您使用这些例程时,必须使用文件夹名字将其解压缩。所有的例程文件必须被解压缩至C:/PanoramaRevGuide文件夹下。
本文档的剩余部分将和您一道了解每个例程。其中的一些例程使用Interactive SQL图形化工具,它在安装SQL Anywhere时已包含在内。可通过以下方法启动Interactive SQL:
• 开始 > 程序 > SQL Anywhere 11 > Interactive SQL
例程中的脚本文件使用SQL Anywhere 11环境变量SQLANY 11,它指向SQL Anywhere 11的安装目录。缺省值为C:/Program Files/SQL Anywhere 11。
内置全文检索 在前端工作的人在他们的日常交互中越来越多地需要处理半结构化的数据:文本文件、消息等等。SQL Anywhere现在提供了内置的全文检索——无需另加组件。全文检索能在数据库中快速查找针对一个术语(文字)的所有出处,而无需对表中的行进行扫描,也无需知道术语存储的列。
内置全文检索例程 本例程演示了如何搭建SQL Anywhere 11中的全文检索并举例说明了如何使用新的CONTAINS子句来执行检索。
1. 启动Interactive SQL并通过ODBC连接至SQL Anywhere 11 Demo数据库:打开命令行并运行以下命令:
dbisql -c "dsn=SQL Anywhere 11 Demo"
2. 执行以下语句(按F5),创建一个名为myTxtConfig的文件配置对象:
CREATE TEXT CONFIGURATION myTxtConfig FROM default_char;
请务必使用FROM子句来指定文本配置对象所使用的模版。
3. 通过添加停止列表定制文本对象(索引时忽略的术语),设置最小术语长度为4,最长术语长度为30。可通过下列三个独立的ALTER TEXT CONFIGURATION语句来完成:
ALTER TEXT CONFIGURATION myTxtConfig STOPLIST 'because about therefore only'; ALTER TEXT CONFIGURATION myTxtConfig MINIMUM TERM LENGTH 4; ALTER TEXT CONFIGURATION myTxtConfig MAXIMUM TERM LENGTH 30;
4. 创建文本索引,其参照到基于Products表的Name和Description字段的myTxtConfig文本配置对象。对于本例,假定表的数据不会经常改变,所以每间隔24小时刷新一次已经足够。
CREATE TEXT INDEX myTxtIdx ON Products ( Name, Description ) CONFIGURATION myTxtConfig AUTO REFRESH EVERY 24 HOURS;
5. 初始化文本索引:
REFRESH TEXT INDEX myTxtIdx ON Products;
6. 使用几个不同的查询验证文本索引。第一个查询返回description中包含了cotton或caps字样的产品:
SELECT ID, Name, Description, Quantity FROM Products WHERE CONTAINS ( Products.Description, 'cotton | caps' );
[img]http://www.betteryou.com.cn/bbspic/asa-1.jpg[/img]
第二个查询演示了如何在select列表中使用全文检索:
SELECT IF CONTAINS ( Description, 'cotton' ) THEN 1 ELSE 0 ENDIF AS Results FROM Products;
第三个查询展示了如何将结果行与欲检索字符串的匹配度返回,并使用该匹配度对结果集进行排序:
SELECT Products.Description, ct.* FROM Products CONTAINS ( Products.Description, 'caps OR cotton' ) ct ORDER BY ct.score DESC;
除了能跨列检索多个术语,并执行相近查询(参看在线文档)外,对text字段中单个术语的全文检索能极大提升性能。下图针对LONG VARCHAR字段使用标准WHERE子句(LIKE)与使用全文检索(CONTAINS子句)进行了比较。在本例中,使用了500MB的数据库。请注意使用全文检索的执行时间(2秒)比不使用全文检索的时间(20秒)快很多。