WEB开发网      濠电娀娼ч崐濠氬疾椤愶附鍋熸い鏍ㄧ〒闂勫嫰鏌﹀Ο渚Ц闁诲氦顕ч湁婵犲﹤楠告禍鍓х磼鏉堛劌绗氶柟宄版嚇閹晠宕归銈嗘濠电偞鍨堕幐鎾磻閹捐秮褰掓偐閻戞﹩妫勯梺鎼炲妼鐎涒晝绮嬪澶樻晝闁挎繂鏌婇敃鍌涚厵閻庢稒锚閻忥絾绻濇繝鍐ㄧ伌闁诡垰鍟村畷鐔碱敂閸♀晙绱樺┑鐐差嚟婵儳螞閸曨剚鍙忛柍鍝勬噹缁€澶嬬箾閹存繄锛嶆鐐灲閹綊宕惰濡插鏌涢妸銉ヮ劉缂佸倸绉归弫鎾绘晸閿燂拷 ---闂備焦瀵уú鈺呭箯閿燂拷
开发学院数据库MSSQL Server 如何理解SQL Server中的Ranking 阅读

如何理解SQL Server中的Ranking

 2008-02-20 09:52:56 来源:WEB开发网 闂備線娼уΛ鎾箯閿燂拷闂備礁鎲¢崹鐢垫崲閹扮増鍎嶆い鎺戝€甸崑鎾斥槈濞嗗秳娌紓鍌氱▌閹凤拷濠电姭鎷冮崨顓濈捕闂侀潧娲ゅú銊╁焵椤掍胶鈯曢柕鍥╁仧缁辩偤鏁撻敓锟�闂備線娼уΛ鎾箯閿燂拷  闂備胶枪缁绘鈻嶉弴銏犳瀬闁绘劕鐏氱€氼剟姊洪崹顕呭剰闁逞屽墮缁夊綊寮婚妸褉鍋撻棃娑欏暈闁伙綀浜埀顒傛暬閸嬪﹪宕伴弽褏鏆﹂柨鐕傛嫹
核心提示: 其中:N:提交查询的Property被索引行的计数,K :( k1 * ( ( 1 – b ) + ( b * dl / avdl ) ) ),如何理解SQL Server中的Ranking(5),dl :Property长度在关键字 word出现的次数,Avdl : 被查询的

其中:

N:提交查询的Property被索引行的计数。 

K :( k1 * ( ( 1 – b ) + ( b * dl / avdl ) ) )。

dl : Property长度在关键字 word出现的次数。

Avdl : 被查询的Property平均长度,在关键字出现的次数。

k1, b, and k3分别是常量1.2, 0.75, and 8.0。

tf:在特殊行中出现的在查询Property中的频率字。

最后 ,让我们用一个实例来观察Rank计算结果,可以加深对以上Rank公式的理解。

CREATE TABLE RANK(id int IDENTITY,
TITLE nvarchar(1000),
Keyword nvarchar(30) ,
context nvarchar(max),
CONSTRAINT PK_RANK PRIMARY KEY(id)) 
INSERT RANK(TITLE, Keyword,Context)
SELECT N'中国招商投资提供资金合同', '资金,合同' ,'2008中国招商投资提供资金合同
中国招商投资提供资金合同中国招商投资提供资金合同'
UNION ALL SELECT N'资金合同', '资金' ,'资金'
UNION ALL SELECT N'大资金大合同', '资金' ,'资金'
UNION ALL SELECT N'国际资金国际合同', '国际资金国际合同' ,
'1国际资金国际合同亚洲资金亚洲合同中国资金合同'
UNION ALL SELECT N'国际资金国际合同', '国际资金国际合同' ,
'1国际资金国际合同亚洲资金亚洲合同中国资金合同'
UNION ALL SELECT N'资金合同', '资金' ,'资金'
UNION ALL SELECT N'国际资金合同', '资金' ,'资金'
UNION ALL SELECT N'中国资金合同中国资金合同', '资金' ,'资金'
UNION ALL SELECT N'国际资金国内资金国家资金', '资金' ,'资金'
UNION ALL SELECT N'国家资金合同国际资金合同', '资金' ,'资金'
UNION ALL SELECT N'国际资金合同', '资金' ,'资金'
UNION ALL
SELECT N' 大量资金大量资金大量资金大量资金大量资金大量资金大量资金大量资金  
大量资金', '资金' ,'资金'
UNION ALL 
SELECT N' 大量大量大量资金大量大量大量大量大量大量大量大量大量大量大量大量  
大量大量', '资金' ,'资金'
GO 
--初始化全文索引
EXEC sp_fulltext_database 'enable' 
GO 
--创建一个名为 DEMO  的全文目录
EXEC sp_fulltext_catalog 'DEMO', 'create'  
GO 
--创建并填充全文索引
EXEC sp_fulltext_table 'RANK','create','DEMO','PK_RANK' 
EXEC sp_fulltext_column 'RANK','TITLE','add',0x0804 
EXEC sp_fulltext_column 'RANK','Keyword','add',0x0804
EXEC sp_fulltext_column 'RANK','context','add',0x0804
EXEC sp_fulltext_table 'RANK','start_change_tracking' 
EXEC sp_fulltext_table 'RANK','Start_background_updateindex' 
GO 

请观察如下语句所产生的按rank值倒序排序返回的结果集:

SELECT f.RANK,TITLE,Keyword ,context
FROM FREETEXTTABLE([rank], (title) ,'资金') AS f
RIGHT JOIN [rank] AS p ON f.[key] = p.ID
ORDER BY f.rank desc

上一页  1 2 3 4 5 

Tags:如何 理解 SQL

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接