CONTAINSSEMANTIC 述詞是 WHERE 子句的一部分,並支援索引內容內的語意搜尋。 該子句可用於根據語義相似性搜尋文字或圖像,而不僅僅是精確的關鍵字匹配。
以下是 CONTAINSSEMANTIC 述詞的基本語法:
...CONTAINSSEMANTIC (ContentType, [<fulltext_column or #list>,] search_text_phrase, LCID) ...
ContentType 參數會指定搜尋是文字還是影像。 允許的值為 “text” 或 “image”。
fulltext_column參考是選用的。 有了它,您可以將搜尋限制在單一欄位或欄位群組,並對其進行 CONTAINSSEMANTIC 謂詞測試。 當 fulltext_column 指定為 “*” 時,會搜尋所有索引文字屬性。 雖然資料行不需要是文字屬性,但如果資料行是其他資料類型,結果可能毫無意義。 直欄名稱可以是一般識別符或已分隔識別符,並且您必須以逗號將其與條件分隔。 如果未指定 fulltext_column,則會使用 System.Search.Contents 資料行,也就是文件的主體內容。
述詞的 LCID 部分會指定搜尋地區設定。 這會指示搜尋引擎針對搜尋查詢使用適當的斷詞符號和屈折形式。 若要指定地區設定,請提供 Windows 標準語言代碼識別碼 (LCID) 。 例如,1033 是美國英語的 LCID。 將 LCID 放在 CONTAINSSEMANTIC 子句括號內的最後一個項目。 如需搜尋和語言的重要資訊,請參閱 使用當地語系化搜尋。
傳統的索引和搜尋繼續順暢地適用於 Windows 上所有支援的語言套件。 不過,改進的搜尋僅針對以下語言進行了最佳化:
| 語言 | LCID 值 |
|---|---|
| 英文 (美國) | 1033 |
| 繁體中文 (CA) | 4105 |
| 英文(AU) | 3081 |
| 英語(GB) | 2057 |
| 法語 (FR) | 1036 |
| 法語 (CA) | 3084 |
| 德語 (DE) | 1031 |
| 西班牙語 (ES) | 3082 |
| 西班牙語 (MX) | 2058 |
| 日語 (JP) | 1041 |
| 中文(簡體) | 2052 |
備註
預設搜尋地區設定是系統預設地區設定。
如需 LCID 值的詳細資訊,請參閱 Windows 語言代碼識別碼 (LCID) 參考。
search_text_phrase部分若為單字,必須以單引號括住,若為片語,則必須以雙引號括住。內容搜尋字詞由一個或多個組成,並使用邏輯運算子 AND 或 OR 進行組合。 您可以在 AND 運算子之後使用選用的一元運算子 NOT 來否定內容搜尋字詞的邏輯值。
備註
NOT 運算子只能出現在 AND 之後。 如果只有一個相符條件,或在 OR 運算子之後,則無法使用 NOT 運算子。
您可以使用括號來分組和巢嵌內容搜尋字詞。 下表說明邏輯運算子的優先順序。
| 順序 (優先順序) | 邏輯運算子 |
|---|---|
| 第一(最高) | 不 |
| Second | 和 |
| 第三(最低) | OR |
相同類型的邏輯運算子是關聯的,並且沒有指定的計算順序。 例如,(A AND B) AND (C AND D) 可以計算為 (B AND C) AND (A AND D),而不改變邏輯結果。
Example
下列範例顯示使用 CONTAINSSEMANTIC 子句查詢與片語「海灘上的家庭」相關的檔和影像。
SELECT * FROM SystemIndex
WHERE CONTAINSSEMANTIC('text', *, 'family on a beach', 1033)
OR CONTAINSSEMANTIC('image', *, 'family on a beach', 1033)
RANK BY MERGE(merge_operation)