国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數(shù)據(jù)庫 > SQL Server > 正文

在全文索引中同義詞的使用(SQL SERVER 2005)

2024-08-31 00:53:22
字體:
供稿:網(wǎng)友
/*建立測試環(huán)境

  WINXP(SP3)+SQL SERVER2005(SP3)*/

if object_id('tb') is not null

   drop table tb

go

create table tb

(id int identity(1,1),

title varchar(200),

detail varchar(1000),

constraint pk_id PRimary key(id) –在建立全文索引時需要使用

)

insert into tb

select '火箭即將簽下新秀射手',' 據(jù)悉,巴丁格與火箭隊的合同談判是于昨天完成的,巴丁格將得到與泰勒一樣的合同。此前媒體曝光泰勒的合同為期四年,總價值萬美元,其中前兩年為保障性合同。巴丁格預計會在接下來幾天內(nèi)正式宣布簽約加盟火箭。'

union all

select '韋弗被曝已與希臘豪門簽約','據(jù)國際籃球網(wǎng)報道,前火箭隊球員范-韋弗已經(jīng)與希臘豪門奧林匹亞科斯隊簽訂了合同。韋弗得到一份為期兩年,總價值萬美元的合同。'

union all

select '馬刺豪擲千金為對抗湖人','馬刺隊在今夏休賽期補充了幾員大將,主教練格雷格-波波維奇日前在接受Yahoo!體育采訪時透露,馬刺隊不惜繳納奢侈稅構(gòu)建豪華陣容就是為了對抗湖人隊,爭取拿到第五個總冠軍。'

union all

select '華萊士未曾想過離開汽車城','此前本-華萊士已經(jīng)同意重返底特律活塞,并且以老將底薪和活塞簽下一份年萬美元的合同,而據(jù)《每日先驅(qū)報》專欄作家米克-麥格勞透露,這位當年叱咤NBA賽場的內(nèi)線防守悍將甚至從來就沒有考慮過要離開活塞隊。'

union all

select '米勒竟好橫刀奪愛追求人妻','對于那些沒看過雷吉·米勒在步行者創(chuàng)造“米勒時間”的“后”們,應(yīng)該怎么介紹這位前NBA球星呢?難道從前天洛杉磯馬里布海灘上空那架飛機拉的橫幅說起?恐怕沒有哪位家長愿意這么做。'

union all

select '姚明:沒把上海當投資項目樂得生意做了好人當了','“姚蜜”說:不缺廣告效應(yīng)的姚明收購瀕臨絕境的上海東方籃球俱樂部,說明他是真的想為曾經(jīng)的母隊做點事情。'

union all

select '火箭不敵奇才終結(jié)年紀錄','此役姚麥組合狀態(tài)糟糕,姚明投中得到分個籃板次蓋帽,麥迪投中拿下分個籃板次助攻,兩人聯(lián)手竟不如得到分個籃板次助攻次蓋帽的賈米森。'



第一步:啟用數(shù)據(jù)庫的全文索引

sp_fulltext_database enable   --啟用數(shù)據(jù)庫的全文索引

go

第二步:建立全文目錄

create fulltext catalog tb_fulltext

in path N'D:/Program Files/Microsoft SQL Server2005/MSSQL.1/MSSQL/FTData'

with accent_sensitivity =on --區(qū)分重音

authorization dbo;--全文目錄的所有者

第三步:建立全文索引

create fulltext index on tb

(title,detail)

key index pk_id --指定索引列,為了提高性能,最好使用聚集索引

on tb_fulltext

with change_tracking auto --在關(guān)聯(lián)的表中修改了數(shù)據(jù)時,自動更新全文索引。



第四步:查詢示例:

select * from tb

where contains((title,detail),'姚明')



查詢的語法:

1、 搜索特定詞:contains(detail,'姚明')

2、 搜索特定短語:用““將短語包含在雙引號內(nèi),contains(detail,'姚明 上海')

3、 從多個列中搜索詞和短語:contains((title,detail),'姚明 上海')

4、搜索以指定文本開頭的詞或短語:contains(detail,'“姚明*“')

如果文本和星號不包含在雙引號內(nèi),則全文搜索會將星號看做是一個字符。如果搜索的是短語,則該短語內(nèi)的每個詞都被看做是一個前綴。contains(detail,'“姚明 上海*“')則將返回第一個詞以姚明開頭第二個詞以上海開頭的結(jié)果

5、 搜索特定詞的變形:contains(detail,'formsof(inflectional,ride)')

將返回表中含有ride,rides,riding,ridden的行

6、搜索與另一個詞或短語臨近的詞或者短語:contains(detail,'姚明 near 上海')

7、使用加權(quán)值的詞或短語:contains(description,’isabout(performance weight(.8),comfortable weight(.4),smooth weight(.2))’)

Weight為每個詞或短語指定一個0.0~1.0之間的加權(quán)值

8、使用多個搜索條件: contains(detail,'”姚明” or “上?!?)

                     contains(detail,'”姚明” and “上海”')

                       contains(detail,'”姚明” and not “上海”')

9、在contains中還可以使用變量

10、搜索同義詞         contains(title,'formsof(thesaurus,上)')

【測試】

在上例中,執(zhí)行

select * from tb

where contains(title,'上海')

結(jié)果:

id     title detail

6     姚明:沒把上海當投資項目 樂得生意做了好人當了     “姚蜜”說:不缺廣告效應(yīng)的姚明收購瀕臨絕境的上海東方籃球俱樂部,說明他是真的想為曾經(jīng)的母隊做點事情。

但是執(zhí)行:

select * from tb

where contains(title,'上')

結(jié)果為空集。

原因:在進行全文索引查詢的時候,“上”為簡體中文的干擾詞,即查詢的時候會忽略掉;另外建立全文索引的時候一般會以一個詞組作為一個索引項,而不是單個詞。



如果還要進行此查詢,想查出第一個查詢的結(jié)果,可以修改全文索引的同義詞庫。



干擾詞與同義詞文件存在的路徑:

D:/Program Files/Microsoft SQL Server2005/MSSQL.1/MSSQL/FTData,每一個文件名應(yīng)該很好辨別。

簡單介紹下修改同義詞庫的方法:

1、 使用記事本打開tschs.xml,這是簡體中文的同義詞庫

<XML ID="Microsoft Search Thesaurus">

<!-- Commented out

    <thesaurus xmlns="x-schema:tsSchema.xml">

       <diacritics_sensitive>0</diacritics_sensitive>

        <expansion>

            <sub>Internet Explorer</sub>

            <sub>IE</sub>

            <sub>IE5</sub>

        </expansion>

        <replacement>

            <pat>NT5</pat>

            <pat>W2K</pat>

            <sub>Windows 2000</sub>

        </replacement>

        <expansion>

            <sub>run</sub>

            <sub>jog</sub>

        </expansion>

    </thesaurus>

-->

</XML>

解釋:

<replacement>

<pat>NT5</pat>

   <pat>W2K</pat>

   <sub>Windows 2000</sub>

</replacement>

為替代詞,即查詢W2K時,會自動替換為Windows 2000進行查詢

<expansion>

   <sub>run</sub>

   <sub>jog</sub>

</expansion>

為同義詞庫,即查詢run的時候也會查詢jog

在本例中添加:

<expansion>

<sub>上</sub>

   <sub>上海</sub>

</expansion>

2、 去掉開始于末尾的注釋行:

    <!-- Commented out

-->

3、最終形成的結(jié)果為:

   <XML ID="Microsoft Search Thesaurus">

    <thesaurus xmlns="x-schema:tsSchema.xml">

       <diacritics_sensitive>0</diacritics_sensitive>

        <expansion>

            <sub>Internet Explorer</sub>

            <sub>IE</sub>

            <sub>IE5</sub>

        </expansion>

        <replacement>

            <pat>NT5</pat>

            <pat>W2K</pat>

            <sub>Windows 2000</sub>

        </replacement>

        <expansion>

            <sub>run</sub>

            <sub>jog</sub>

        </expansion>

       <expansion>

            <sub>上</sub>

            <sub>上海</sub>

        </expansion>

    </thesaurus>

</XML>

3、 執(zhí)行查詢語句:

select * from tb

where contains(title,'formsof(thesaurus,上)')

即可看到查詢結(jié)果與contains(title,'上海')相同

2 0 0
(請您對文章做出評價)
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 镇坪县| 安阳市| 余姚市| 崇明县| 共和县| 屯昌县| 克山县| 曲阳县| 马龙县| 大方县| 桐城市| 巴彦淖尔市| 汶上县| 奈曼旗| 曲周县| 安西县| 商城县| 阳曲县| 西乡县| 舞钢市| 东海县| 日喀则市| 郸城县| 新泰市| 思茅市| 渭源县| 彭阳县| 大足县| 资中县| 南通市| 南昌市| 金华市| 黑河市| 北京市| 镇安县| 康保县| 五原县| 乌拉特中旗| 武平县| 铁岭市| 呼和浩特市|