Atitit.軟體按鈕與儀錶盤(13)--全文索引操作--db資料庫子系統mssql2008

來源:互聯網
上載者:User

標籤:des   Lucene   style   blog   http   io   color   os   ar   

Atitit.軟體按鈕與儀錶盤(13)--全文索引操作--db資料庫子系統mssql2008

 

全文索引操作

 

4.全文索引和like語句比較 1

 5.倒排索引 inverted index 1

2.SQL Server 2008全文檢索索引 2

3.Lucene全文檢索索引 3

一般情況,使用SQL Server中的全文索引,經過大體4個步驟: 4

Mssql2008的全文索引操作(attilax驗證) 5

查看全文index使用大小 5

查看錶行數與體積大小 6

參考 6

 

4.全文索引和like語句比較

當然是全文索引的執行效率高.

一般全文索引使用的是倒排索引,能夠支援多關鍵字的索引,而LIKE只有首碼匹配時才能使用索引,否則就是全表掃描,效率當然很低

但全文索引存在填充問題,需要在增加內容後進行增量填充,否則檢索不到新增的內容的。Sql Server 2008裡可採用基於變更追蹤的填充, 速度飛快, 幾乎可以認為就是即時增量填充了.

 

作者::老哇的爪子Attilax艾龍,EMAIL:[email protected]

轉載請註明來源: http://blog.csdn.net/attilax

 5.倒排索引 inverted index

為什麼Sql server全文檢索索引和Lucune全文檢索索引速度快呢, 因為它和大多數搜尋引擎一樣, 都使用了倒排索引 inverted index

 

2.SQL Server 2008全文檢索索引

為了提高效率, 換用sql server的全文檢索索引, 怎麼建全文檢索索引就此略去, 不提, 只看查詢方法.

例如: select * from table where contains(ProductDesc, ‘*cad*‘)

它查詢的效率很高, 支援中文分詞(但好不好就另說了), 但缺點竟然是在英文查詢上, 如果想模糊查詢帶cad三個字母的資料, 它只能搜尋出以cad為完整單詞的資料, 例如: 它能查出abc cad , cad def, 或者cad, 它不能查出autocad這種字母連在一起的資料, 也就是說, sql server的全文檢索索引的英文分詞是空格, 要想查連在一起的英文詞, 它辦不到, 得另尋第三方的全文索引了, ms如果在這裡開個可擴充的口子多好, 可惜了.

索引的更新填充問題: 建立好全文檢索索引就自動來一次完全填充, 如果在跟蹤更改處選擇自動, 全文檢索索引就會採用基於變更追蹤的填充, 原表資料一旦有改動, 就會從後台悄悄地傳播過來, 自動的更新全文索引. 具體可參考http://msdn.microsoft.com/zh-cn/library/ms142575.aspx

在更新全文索引之前這段時間, 搜不到新錄入但未收入全文索引的資料, 但like可查到. 雖然不是即時的, 但是經過測試, 我發現這個更新速度非常之快, 幾乎一改原表, 全文索引就更新了, 所以我覺得可以認為即時的, 估計sqlserver內部應該是用觀察者模式實現這個功能的.

另外, contains包含的列都必須來自同一個表, 不能跨表, 例如where contains(a.ProductDesc, b.ProductName, ‘*cad*‘), 這樣是不行的.

 

3.Lucene全文檢索索引

SQL server全文檢索索引不靈了, 只能找第三方的方案了, 首當其衝的就是Lucene了, 但在.net下, Lucene卻很不順當. 

NLucene是將 Lucene 從 Java 移植到 .NET 的一個 SourceForge 項目,它從 Lucene 1.2 版本轉化而來, 但2002年就停止更新了.

因為 NLucene 項目到2002年就沒有再推出新的版本,可Lucene 卻一直在發展,於是有人把Lucene 1.3版移植到.NET就成了Lucene .NET,但是Lucene .Net發展到2.0版的時候變成了商業化的產品,脫離了開源項目, 聽說現在進了孵化器已停止開發了, 但上官網http://incubator.apache.org/lucene.net/download.html上看, 還仍然在更新中似乎沒有停止, 最新開源的版本是2.9.2, 發布日期是2011年5月6日, 他們還在準備2.9.4版. 

受到Lucene.Net脫離開源項目的影響,有人為了繼續發展開源.Net搜尋引擎,於是在Lucene.Net的原有基礎上繼續發展該項目,但是名字改成了DotLucene以區別於Lucene.Net。但現在開啟官網一看, 得, 又停止了. 看來, 只能用Lucene.Net2.0這最後一個開源版本了.

索引的更新填充問題: 也是要隔一段時間更新一次索引, 也是不可即時更新的, 需要定期更新填充才可以, 如果需要頻繁更新推薦刪除舊的然後重建索引.

一般情況,使用SQL Server中的全文索引,經過大體4個步驟:

  1). 安裝full text search全文索引服務;

  2). 為資料表建立full text catalog全文索引目錄;

  3). 進行full text catalog的population操作(使全文索引與資料表內容同步);

4). 使用全文索引進行查詢。

 

Mssql2008的全文索引操作(attilax驗證)

 1.啟動SQL Full-text Filter Daemon Launcher (MSSQLSERVER) 服務

2.建設:::索引表格>>ritkey>>全文index>>建立fulltxt  或者

Db>儲存>>全文檢索目錄>建立全文檢索目錄

3..增添計劃>>cpu 閒置.....

4.   4. 使用索引功能:

select * from mybbs_Table where Contains(col2,‘"windows"‘);

速度還湊火..

查看全文index使用大小

增添狀態:::正在處理通知 ..表明目前等候插入....平常狀態..

目錄大小:::5g

查看錶行數與體積大小

 

表格屬性>>儲存...>>>35G

參考

Lucene.Net, SQL Server 2008全文檢索索引, Like模糊查詢的一點心得 - BobLiu - 部落格園.html

使用SQL Server中的全文索引_知識庫_部落格園.html

 

 

 

Atitit.軟體按鈕與儀錶盤(13)--全文索引操作--db資料庫子系統mssql2008

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.