<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
全文索引在表中包括一個或多個基於字元的列。這些列可以具有以下任何資料型別:char、varchar、nchar、nvarchar、text、ntext、image、xml 或 varbinary(max) 和 FILESTREAM。每個全文索引為表中的一列或多列編制索引,並且每列可以使用特定的語言。
全文查詢通過基於特定語言(如英語或中文)的規則對單詞和短語進行操作,對全文索引中的文字資料執行語言搜尋。全文查詢可以包括簡單的字詞和短語,也可以包括字詞或短語的多種形式。全文查詢返回至少包含一個匹配項(也稱為匹配項)的任何檔案。當目標檔案包含全文查詢中指定的所有術語,並滿足任何其他搜尋條件(如匹配術語之間的距離)時,將發生匹配。
將列新增到全文索引後,使用者和應用程式可以對列中的文字執行全文查詢。這些查詢可以搜尋以下任何內容:
全文查詢不區分大小寫。例如,搜尋"Aluminum" 或 "aluminum"將返回相同的結果。
全文查詢使用一小組 Transact-SQL 謂詞 ( and ) 和函數 ( and ) 。但是,給定業務方案的搜尋目標會影響全文查詢的結構。例如:CONTAINS FREETEXT CONTAINSTABLE FREETEXTTABLE
(1)電子商務-在網站上搜尋產品:
SELECT product_id FROM products WHERE CONTAINS(product_description, '"Snap Happy 100EZ"' OR FORMSOF(THESAURUS,'"Snap Happy"') OR '100EZ') AND product_cost < 200 ;
(2)招聘方案 - 搜尋具有使用 SQL Server 經驗的求職者:
SELECT candidate_name,SSN FROM candidates WHERE CONTAINS(candidate_resume, '"SQL Server"') AND candidate_division = 'DBA';
與全文搜尋相比,LIKE Transact-SQL 謂詞僅適用於字元模式。此外,不能使用 LIKE 謂詞查詢格式化的二進位制資料。此外,針對大量非結構化文字資料的 LIKE 查詢比針對相同資料的等效全文查詢慢得多。針對數百萬行文字資料的 LIKE 查詢可能需要幾分鐘才能返回;而全文查詢對相同資料可能只需要幾秒鐘或更短的時間,具體取決於返回的行數。
全文搜尋體系結構由以下過程組成:
出於安全原因,過濾器由稱為過濾器守護程式主機的單獨程序載入。fdhost.exe程序由 FDHOST 啟動器服務 (MSSQLFDLauncher) 建立,它們在 FDHOST 啟動器服務帳戶的安全憑據下執行。因此,FDHOST 啟動器服務必須執行才能使全文索引和全文查詢正常工作。
這兩個過程包含全文搜尋體系結構的元件。下圖總結了這些元件及其關係。這些元件在圖示後進行了描述。
SQL Server 程序使用以下元件進行全文搜尋:
篩選器守護程式主機是由全文引擎啟動的程序。它執行以下全文搜尋元件,這些元件負責存取、篩選和分詞表資料,以及分詞和對查詢輸入進行詞幹提取。
篩選器守護程式主機的元件如下所示:
全文搜尋由全文引擎提供支援。全文引擎有兩個角色:索引支援和查詢支援。
啟動全文填充(也稱為爬網)時,全文引擎會將大量資料推播到記憶體中,並通知篩選器守護程式主機。主機過濾和單詞分解資料,並將轉換後的資料轉換為倒置單詞列表。然後,全文搜尋從單詞列表中提取轉換後的資料,處理資料以刪除非索引字,並將批次處理的單詞列表儲存到一個或多個倒排索引中。
對儲存在 varbinary(max) 或影象列中的資料編制索引時,實現 IFilter 介面的篩選器會根據該資料的指定檔案格式(例如 Microsoft Word)提取文字。在某些情況下,過濾器元件需要將變數(max)或影象資料寫出到filterdata資料夾,而不是推播到記憶體中。
作為處理的一部分,收集的文字資料通過分詞系統傳遞,以將文字分隔為單獨的標記或關鍵字。用於標記化的語言在列級別指定,也可以通過過濾器元件在 varbinary(max)、影象或 xml 資料中標識。
可以執行其他處理以刪除非索引字,並在標記儲存在全文索引或索引片段中之前對其進行規範化。
填充完成後,將觸發最終合併過程,將索引片段合併到一個主全文索引中。這提高了查詢效能,因為只需要查詢主索引而不是多個索引片段,並且可以使用更好的評分統計資訊進行相關性排名。
查詢處理器將查詢的全文部分傳遞給全文引擎進行處理。全文引擎執行斷詞和(可選)同義詞庫擴充套件、詞幹提取和非索引字(干擾詞)處理。然後,查詢的全文部分以 SQL 運運算元的形式表示,主要表示為流式表值函數 (STVF)。在查詢執行期間,這些 STVF 存取倒排索引以檢索正確的結果。此時,結果要麼返回到使用者端,要麼在返回到使用者端之前進一步處理。
全文引擎使用全文索引中的資訊來編譯全文查詢,這些查詢可以快速在表中搜尋特定單詞或單詞組合。全文索引儲存有關重要單詞及其在資料庫表的一列或多列中的位置的資訊。全文索引是一種特殊型別的基於令牌的功能索引,由 SQL Server 全文引擎生成和維護。構建全文索引的過程不同於構建其他型別的索引。全文引擎不是基於儲存在特定行中的值構造 B 樹結構,而是基於要編制索引的文字中的單個標記構建倒置、堆疊、壓縮的索引結構。全文索引的大小僅受執行 SQL Server 範例的計算機的可用記憶體資源的限制。
從 SQL Server 2008 (10.0.x) 開始,全文索引與資料庫引擎整合,而不是像以前版本的 SQL Server 那樣駐留在檔案系統中。對於新資料庫,全文目錄現在是不屬於任何檔案組的虛擬物件;它只是一個邏輯概念,指的是一組全文索引。
每個表只允許有一個全文索引。若要在表上建立全文索引,該表必須具有單個唯一的非空列。可以在 char、varchar、nchar、nvarchar、nvarchar、text、ntext、image、xml、varbinary 和 varbinary(max) 型別的列上構建全文索引,以便為全文搜尋編制索引。 在資料型別為變數、變數二進位制(max)、影象或 xml 的列上建立全文索引需要指定型別列。型別列是表格列,您可以在其中將檔案的副檔名(.doc、.pdf、.xls等)儲存在每行中。
充分了解全文索引的結構將有助於您瞭解全文引擎的工作原理。例如:
標識 | 標題 |
---|---|
1 | 曲柄臂和輪胎保養 |
2 | 前反射器支架和反射器元件 3 |
3 | 前反射器支架安裝 |
下表顯示了片段 1,描述了在“檔案”表的“標題”列上建立的全文索引的內容。全文索引包含的資訊比此表中顯示的資訊要多。該表是全文索引的邏輯表示形式,僅用於演示目的。這些行以壓縮格式儲存,以優化磁碟使用情況。
請注意,資料已從原始檔案反轉。發生反轉是因為關鍵字對映到檔案 ID。因此,全文索引通常稱為倒排索引。
另請注意,關鍵字“and”已從全文索引中刪除。這樣做是因為“and”是非索引字,從全文索引中刪除非索引字可以節省大量磁碟空間,從而提高查詢效能。
片段一:
“關鍵字”列包含在編制索引時提取的單個標記的表示形式。分詞系統確定令牌的組成。
邏輯全文索引通常拆分為多個內部表。每個內部表稱為全文索引片段。其中一些片段可能包含比其他片段更新的資料。例如,如果使用者更新 標識為 3 的以下行,並且表是自動更改跟蹤的,則會建立一個新片段。
檔案標識 | 標題 |
---|---|
3 | 後反射器 |
一下的片段 2,與片段 3 相比,片段包含有關 標識 1 的更新資料。因此,當用戶查詢“後反射器”時,片段 2 中的資料將用於 標識3。每個片段都標有建立時間戳,可以使用sys.fulltext_index_fragments目錄檢視查詢該時間戳。
片段 2:
關鍵詞 | 結腸 | 標識 | 交流 |
---|---|---|---|
後 | 1 | 3 | 1 |
反射鏡 | 1 | 3 | 2 |
從片段 2 可以看出,全文查詢需要在內部查詢每個片段並丟棄較舊的條目。因此,全文索引中的全文索引片段過多可能會導致查詢效能大幅下降。若要減少片段數,請使用“更改全文目錄 Transact-SQL”語句的“重新組織”選項重新組織全文目錄。此語句執行主合併,這會將片段合併為一個較大的片段,並從全文索引中刪除所有過時的條目。
重新組織後,範例索引將包含以下行:
全文索引 | 常規 SQL Server 索引 |
---|---|
每個表只允許有一個全文索引。 | 每個表允許多個常規索引。 |
可以通過計劃或特定請求向全文索引新增資料(稱為填充),也可以通過新增新資料自動進行。 | 在插入、更新或刪除它們所基於的資料時自動更新。 |
在同一資料庫中分組到一個或多個全文目錄中。 | 未分組。 |
SQL Server的全文引擎駐留在 SQL Server 程序中,而不是駐留在單獨的服務中。將全文引擎整合到資料庫引擎中提高了全文可管理性、混合查詢的優化和整體效能。
全文搜尋支援近 50 種不同的語言,例如英語、西班牙語、中文、日語、阿拉伯語、孟加拉語和印地語。
到此這篇關於SQL Server實現全文搜尋查詢詳解的文章就介紹到這了,更多相關SQL Server全文搜尋內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45