MSSQL系列之十五 全文索引

      網(wǎng)友投稿 829 2025-04-02

      (前端理論為摘抄)大家都知道LIKE查詢很慢,全文索引就是事先做好相關的索引,表示哪個主題詞可以在哪些記錄里找到,甚至事先計算好,檢索時可以把相關度高的先列出來,這可以大大提高檢索的速度。


      打個比方,你有很多的小抽屜,每個抽屜里面放一些雜物,假如你要找東西,最原始的方法就是一個個抽屜翻,這就是沒有索引的情況。

      假如聰明一點,給抽屜編號(唯一鍵),把哪個號碼的抽屜有什么東西記錄在紙上,找東西先看看這張紙,這就是普通索引,假如你要知道哪個抽屜有什么,你可以在紙上迅速找到抽屜號碼(大家知道這是使用查找樹),然后得到相關的信息,這種情況普通索引是很快的;但是要找到一個特定的東西哪些抽屜有,你就要把整張紙遍歷一次,這就是LIKE查詢,假如你要找哪些抽屜同時有2種甚至更多種物品,LIKE就更加繁瑣了。假如一個表有上千萬的紀錄,大家可以想象查詢的代價。

      可以換一個思路,另外找張紙,記錄一樣東西存在于哪些抽屜:

      夾子:1,3,4,5,6,9,12...

      錢幣:2,3,4,7,12...

      藥丸:1,3,5,6...

      這樣找到某樣東西或者某幾樣東西都很容易。

      全文索引和普通的SQL索引有很多的區(qū)別:

      普通 SQL 索引全文索引 存儲時受定義它們所在的數(shù)據(jù)庫的控制。存儲在文件系統(tǒng)中,但通過數(shù)據(jù)庫管理。 每個表允許有若干個普通索引。每個表只允許有一個全文索引。當對作為其基礎的數(shù)據(jù)進行插入、更新或刪除時,它們自動更新。將數(shù)據(jù)添加到全文索引稱為填充,全文索引可通過調(diào)度或特定請求來請求,也可以在添加新數(shù)據(jù)時自動發(fā)生。 不分組。在同一個數(shù)據(jù)庫內(nèi)分組為一個或多個全文目錄。使用 SQL Server 企業(yè)管理器、向?qū)Щ?Transact-SQL 語句創(chuàng)建和除去。使用 SQL Server 企業(yè)管理器、向?qū)Щ虼鎯^程創(chuàng)建、管理和除去。

      --參考表QQblog(僅供參考)

      Create table QQBlog

      (

      id char(10) Constraint PK_Id primary key,--注意:藍色為關鍵字,Primary key為主鍵約束;PK_ID為主鍵約束名

      topic varchar(30)not null,--標題一般不允許空,所以設置不為"空"

      QQcontent varchar(8000),--內(nèi)容

      kind char(8)Constraint DF_Kind default '個人日志',--原創(chuàng)、轉(zhuǎn)載,個人日志

      begintime datetime Constraint DF_BeginTime default getdate(),--getdate():獲得當前日期和時間

      visitCount int,--訪問量

      replyCount int --回復量

      )

      insert qqblog(topic,QQcontent,kind) values('白雪公主','在丹麥的一個小農(nóng)村,里面發(fā)生了一起感人的事件,一個青蛙','日志')

      insert qqblog(id,topic,QQcontent,kind) values('blog07','軟件','安阿餓是NIIT有個人馬化騰,開發(fā)了一款軟件,會講故事,java c#,右微軟買了該軟件','日志')

      insert qqblog(topic,QQcontent,kind) values('QQ之父','1998年,馬化騰和幾個同學成立了自己的軟件公司,當時公司很小,主營業(yè)務是為其他公司做軟件外包.據(jù)馬化騰回憶說,當時跟他很熟的丁磊正在做郵箱系 統(tǒng),之后也賣了很多版本,“我也做過郵件,也給尋呼臺做過互動系統(tǒng),比如短信查郵件什么的,即時通信是其中一個項目.”

      做好了軟件系統(tǒng),接下來就是銷售,“當時并不止我一家在做這種通信產(chǎn)品,有一次投標,為了搶先,我甚至在產(chǎn)品成型前就先寫好了投標書.”結(jié)果當然是投標失敗,“但現(xiàn)在想想還真的是幸運,那個拿到項目的公司沒有再維護產(chǎn)品,只有我們的QQ被砸在手上,才會持續(xù)做下去.”

      連馬化騰自己都沒有想到,到了2000年的時候,隨便走進一個網(wǎng)吧,聊天工具QQ跳動的企鵝已經(jīng)成了流行,“我沒想到那么多人在網(wǎng)上爭著和認識不認識的人聊天,好多人為此刻苦學習打字,真瘋狂.”

      ','日志')

      insert qqblog(topic,QQcontent,kind) values('QQ之父2',' “要說煎熬,我創(chuàng)業(yè)最煎熬的就是這段時間,我不喜歡這樣的拖延,那時候納斯達克已經(jīng)快崩盤了.”

      產(chǎn)品有人用,離公司上市還有一大段距離,無論如何,2000年的騰訊還是個小公司,而且它的駐地在深圳,“深圳沒有北京的海歸圈子,當時的風險投資也不懂,全靠高交會幫了忙.”馬化騰回憶說,看在國外的前輩ICQ的成功經(jīng)驗上,盈科數(shù)碼和IDG投資了騰訊,“兩家一起進,壯著膽子.”

      但馬化騰的融資過程并不順利,隨著互聯(lián)網(wǎng)冬天的臨近,IDG投資完之后一直忙著為馬化騰的公司找下家,“找過搜狐、新浪,他們都沒看得上眼.”馬化騰記 得,當時任職搜狐的古永鏘和馮玨都到騰訊看過一眼,2001年春天,馬化騰自己又去新浪見了王志東和汪延,但后來都沒了消息.

      最后進場的買家是傳媒集團MIH,而最令馬化騰心焦的一段創(chuàng)業(yè)經(jīng)歷也自此開始,“我愿意找更有實力的投資人,IDG也愿意出售股權(quán),但盈科不答應.”當時的盈科,小超人李澤楷的數(shù)碼港計劃如日中天,“他甚至還找過王晶這樣的導演來我們公司參觀,探討前景.”

      ','日志')

      insert qqblog(topic,QQcontent,kind) values('QQ之父3','“要說煎熬,我創(chuàng)業(yè)最煎熬的就是這段時間,我不喜歡這樣的拖延,可當時盈科不說買也不說賣,把我們晾在一邊,等到最后終于定下來出售已經(jīng)是2001年6月,那時候納斯達克已經(jīng)快崩盤了.”

      資本市場的幸運與否也許真的很難判斷,到了2008年6月,因為股價增長強勁和穩(wěn)定,騰訊成為恒生指數(shù)的成分股,它頂替的正是盈科.馬化騰 王志東和汪延

      受惠母親一本清晰的財務賬“她很負責任地幫我整理財務報表,后來公司搬家,搬那些桌椅板凳都是家里人幫忙,因為公司要減輕負擔.”

      現(xiàn)在看起來,馬化騰的創(chuàng)業(yè)途徑很符合年輕人對所謂“知識英雄”的想象,寫代碼出身,幾個同學合伙創(chuàng)業(yè),一起加班吃盒飯,熬夜改產(chǎn)品,憑借創(chuàng)意和勤奮取得成功,慢慢地公司上市,簡陋的辦公室換成宏偉的大樓,創(chuàng)始人進入富豪榜.

      但實際的情形要艱苦得多,以至于馬化騰需要給自己最感謝的人列一個長長的名單,“要感謝家里人,最開始我媽不同意,我爸挺支持我的,可最早的董事長卻是我母親.”馬化騰回憶說,一開始,幾個年輕人是拿著母親的退休證去注冊的公司,但這位法人母親幾乎都沒來過公司,“可是她很負責任地幫我整理財務報表,后來 公司搬家,搬那些桌椅板凳都是家里人幫忙,因為公司要減輕負擔.”馬化騰的感謝名單里還有當時深圳電腦協(xié)會的秘書長“丁阿姨”,還有現(xiàn)在深圳電信局的一個朋友,“是他們幫我們找了辦公場地,免我們的租金,聯(lián)系托管服務器,現(xiàn)在看好像這些事情很小,但沒有這些,當時真不敢往下走.”

      也許是對創(chuàng)業(yè)過程中這些幫助難以忘卻,馬化騰在招聘時定下一個標準——“人品好”,“我?guī)缀跏怯悬c偏執(zhí)地超級強調(diào)這一點,我們幾個創(chuàng)始人都喜歡簡單,不喜歡搞政治化,哪怕你說我不懂也好,我就是強調(diào)簡單,人品第一,這樣的畢業(yè)生進入我的公司培養(yǎng)三年,我讓他成為業(yè)務骨干.”

      ','日志')

      Declare @i int --定義@i變量為int型

      set @i=152792 --變量的初始化

      while @i<=1000000

      begin

      set @i=@i+1 --每次加1

      insert QQBlog(id,topic,QQcontent,kind) values('blog'+convert(char(7),@i),'QQ歷史','要說煎熬,我創(chuàng)業(yè)最煎熬的就是這段時間,我不喜歡這樣的拖延,可當時盈科不說買也不說賣,把我們晾在一邊,等到最后終于定下來出售已經(jīng)是2001年6月,那時候納斯達克已經(jīng)快崩盤了.”

      資本市場的幸運與否也許真的很難判斷,到了2008年6月,因為股價增長強勁和穩(wěn)定,騰訊成為恒生指數(shù)的成分股,它頂替的正是盈科.馬化騰 王志東和汪延

      受惠母親一本清晰的財務賬“她很負責任地幫我整理財務報表,后來公司搬家,搬那些桌椅板凳都是家里人幫忙,因為公司要減輕負擔.”

      現(xiàn)在看起來,馬化騰的創(chuàng)業(yè)途徑很符合年輕人對所謂“知識英雄”的想象,寫代碼出身,幾個同學合伙創(chuàng)業(yè),一起加班吃盒飯,熬夜改產(chǎn)品,憑借創(chuàng)意和勤奮取得成功,慢慢地公司上市,簡陋的辦公室換成宏偉的大樓,創(chuàng)始人進入富豪榜.

      但實際的情形要艱苦得多,以至于馬化騰需要給自己最感謝的人列一個長長的名單,“要感謝家里人,最開始我媽不同意,我爸挺支持我的,可最早的董事長卻是我母親.”馬化騰回憶說,一開始,幾個年輕人是拿著母親的退休證去注冊的公司,但這位法人母親幾乎都沒來過公司,“可是她很負責任地幫我整理財務報表,后來 公司搬家,搬那些桌椅板凳都是家里人幫忙,因為公司要減輕負擔.”馬化騰的感謝名單里還有當時深圳電腦協(xié)會的秘書長“丁阿姨”,還有現(xiàn)在深圳電信局的一個朋友,“是他們幫我們找了辦公場地,免我們的租金,聯(lián)系托管服務器,現(xiàn)在看好像這些事情很小,但沒有這些,當時真不敢往下走.”

      也許是對創(chuàng)業(yè)過程中這些幫助難以忘卻,馬化騰在招聘時定下一個標準——“人品好”,“我?guī)缀跏怯悬c偏執(zhí)地超級強調(diào)這一點,我們幾個創(chuàng)始人都喜歡簡單,不喜歡搞政治化,哪怕你說我不懂也好,我就是強調(diào)簡單,人品第一,這樣的畢業(yè)生進入我的公司培養(yǎng)三年,我讓他成為業(yè)務骨干.”

      ','日志')

      end

      select * from qqblog

      sp_fulltext_database enable --1.激活數(shù)據(jù)使能全文索引

      go

      create fulltext catalog cat1 as default --2.建立全文目錄:建好在FTData下面.指定該目錄為默認目錄

      create fulltext index on QQBlog(QQcontent) key index PK_Id --3.建立全文索引 on cat1 with NO POPULATION ,創(chuàng)建之后不填充

      --

      alter fulltext index on QQBlog start full population--4.起用填充

      --只有在用戶使用 START FULL、INCREMENTAL 或 UPDATE POPULATION 子句執(zhí)行 ALTER FULLTEXT INDEX 命令后,才會填充索引。

      --開始/增長/更新

      --5.使用全文索引

      --在qqblog表中查找包含馬化騰或盈科 的所有記錄

      select * from qqblog where qqContent like '%馬化騰%' or qqContent like '%盈科%' --51秒

      select count(*) from qqblog --161012

      select * from qqblog where freetext(QQcontent,'馬化騰 在 王志東')--freetext(列名,'要查找內(nèi)容')--23秒--161010

      --馬化騰 王志東 是馬化騰或王志東

      select * from qqblog where contains(QQContent,'"馬化騰" or "王志東"')--161007

      --contains:"馬化騰 王志東",這是一個短語

      --有點區(qū)別???

      select * from qqblog where QQContent like '%馬化騰%'

      --要注意查找的時候不要包含噪音詞:在FTData下面的noise...文件下

      /*記錄的比較凌亂,請大家原諒,希望能從中找到適合自己的東東*/

      -- contains謂詞主要是針對單字或句子做查詢。

      -- freetext謂詞則會將指定的句子分解為一個個的單字,然后查詢這些單字。

      ----------------------------------contains-----------------------------------------

      --搜尋書籍名稱字段中有 windows computer print 這個單詞的記錄

      select * from 書籍 where

      contains(書籍名稱,'"windows or computer or print"')

      select * from 書籍 where contains(書籍名稱,'"windows"')

      --搜尋書籍字段中包含短語的記錄

      select * from 書籍 where contains(書籍名稱,'"a computer failure"')

      --例:this is a computer,failure to work 此句子也將被搜尋出來。

      MSSQL系列之十五 全文索引

      --帶有通配符的查詢

      select * from 書籍 where contains(書籍名稱,'"sea*" OR "bread*"')

      --下面的示例返回包含短語 "sasquatch ale" 或 "steeleye stout" 的所有產(chǎn)品。

      use northwind

      go

      select productname

      from products

      where contains(productname, ' "sasquatch ale" or "steeleye stout" ')

      go

      --------------------------------freetext----------------------------

      select * from 書籍 where freetext(地址,' "I like windows 2000 and photoshop 5" ')

      select * from 書籍 where freetext(地址,' "北京市大興區(qū)林校北路" ')

      -- a. 使用 freetext 搜索包含指定字符值的單詞

      -- 下例搜索產(chǎn)品描述中含有與 sweetest bread、candy、dry 和 meat 相關的詞語的

      -- 所有產(chǎn)品類別,如 breads、candies、dried 和 meats 等。

      use northwind

      go

      select categoryname

      from categories

      where freetext (description, 'sweetest candy bread and dry meat' )

      go

      --b. 在全文檢索中使用變量

      -- 下例使用變量而不是特定的搜索術(shù)語。

      use pubs

      go

      declare @searchword varchar(30)

      set @searchword ='moon'

      select pr_info from pub_info where freetext(pr_info, @searchword)

      SQL

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔相應法律責任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔相應法律責任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:怎樣篩選(怎樣篩選大于多少的數(shù)據(jù))
      下一篇:excel取余函數(shù)的使用教程
      相關文章
      亚洲日本天堂在线| 在线精品亚洲一区二区小说| 国产精品亚洲mnbav网站 | 亚洲成a人片在线观看播放| 精品久久久久久亚洲| 亚洲尤码不卡AV麻豆| 国产aⅴ无码专区亚洲av麻豆 | 亚洲第一永久AV网站久久精品男人的天堂AV| 亚洲午夜精品一区二区麻豆| 国产成人精品亚洲2020| 国产亚洲福利在线视频| 亚洲夂夂婷婷色拍WW47| 日韩亚洲产在线观看| 亚洲夂夂婷婷色拍WW47| 亚洲av色香蕉一区二区三区| 亚洲丰满熟女一区二区哦| 国产亚洲欧美日韩亚洲中文色| 亚洲av成人中文无码专区| 日韩色日韩视频亚洲网站| 国产一区二区三区亚洲综合| 亚洲国产人成精品| AV在线亚洲男人的天堂| 国产精品久久久亚洲| 婷婷精品国产亚洲AV麻豆不片| 久久久久亚洲AV无码专区体验| 亚洲高清日韩精品第一区| 亚洲区精品久久一区二区三区| 亚洲人和日本人jizz| 四虎必出精品亚洲高清| 亚洲av乱码一区二区三区按摩| jjzz亚洲亚洲女人| 国产亚洲成人在线播放va| 国产V亚洲V天堂无码| 亚洲精品国产成人99久久| 亚洲妓女综合网99| 亚洲愉拍一区二区三区| 亚洲国产成人VA在线观看| 亚洲熟妇av一区二区三区漫画| 久久精品国产亚洲AV网站| 亚洲福利一区二区| 亚洲欧美aⅴ在线资源|