熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> SQL Server >> 正文

Microsoft SQL Server 全文索引服務 - 編程提高篇

2013-11-15 14:34:12  來源: SQL Server 

  關於安裝設置和基本編程請參見Microsoft SQL Server 全文索引服務安裝設置篇(?id=)和Microsoft SQL Server 全文索引服務編程篇(?id=)
  
  SQL 的全文檢索和Index Server的檢索方式非常類似
  
  Contains
  AND OR NOT
  可以在Contains中很方便使用邏輯表達式
  
  Example:
  Select username from member where contains(userinfo作家 AND 木匠)Select username from member where contains(userinfo作家 OR 木匠)Select username from member where contains(userinfo作家 AND NOT 木匠)NEAR
  這是一個在普通的邏輯表達式中沒有的關鍵字意思是很簡單就是說找到靠近的兩個詞Example:
  Select Content from MicrosoftRecord where contains(Content比爾·蓋茨 NEAR 保羅·艾倫)這就表示要找到全文中包含比爾·蓋茨和保羅·艾倫並且兩個詞相隔不遠
  
  FORMSOF INFLECTIONAL
  這個功能可以查找單詞的各種形式比如過去式復數動詞形式名詞形式等可惜對中文沒什麼用Example:
  SELECT ProductName FROM Products WHERE CONTAINS(ProductNameFORMSOF (INFLECTIONAL dry))*
  這個功能可以查找單詞的前綴不過對中文也沒有什麼用處
  
  Example:
  SELECT ProductName FROM Products WHERE CONTAINS(ProductName dis*)
  
  ISABOUT WEIGHT
  這個功能可以給復合查詢時不同的條件以不同的權重以決定返回的記錄集的順序SELECT CategoryName Description FROM Categories WHERE CONTAINS(Description ISABOUT spread weight () sauces weight () relishes weight () ) )
  權重的值可以從
  
  ContainsTable
  它的使用方式和Contains基本相同這裡就不再重復介紹了要提到的是它返回的是一張供你進一步查詢的表而不是一個查詢條件
  
  FreeText
  如果使用這種方式那麼查詢的時候會使用分詞技術來實現模糊查詢並且過濾掉一些非關鍵詞比較類似於Contains中的FORMSOF可惜對中文也沒有什麼支持
  
  Example:
  SELECT CategoryName FROM Categories WHERE FREETEXT (Description sweetest candy bread and dry meat )FreeTextTable
  它和FreeText的差別就跟Contains和ContainsTable的差別一樣

From:http://tw.wingwit.com/Article/program/SQLServer/201311/21995.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.