全部產品
Search
文件中心

Tablestore:全文檢索索引

更新時間:Jul 31, 2024

使用匹配查詢(TEXT_MATCH)或者短語匹配查詢(TEXT_MATCH_PHRASE)條件作為SELECT語句中的WHERE子句,您可以使用SELECT語句通過多元索引查詢表中匹配指定字串的資料,實現全文檢索索引功能。

前提條件

已建立多元索引並為要匹配的列設定了分詞。具體操作,請參見建立多元索引

說明

關於分詞的更多資訊,請參見分詞

匹配查詢

匹配查詢採用近似匹配的方式查詢表中的資料。對Text類型的列值和查詢關鍵詞會先按照設定好的分詞器做切分,然後按照切分好後的詞去查詢。對於進行模糊分詞的列,建議使用TEXT_MATCH_PHRASE實現高效能的模糊查詢。

  • SQL運算式

    TEXT_MATCH(fieldName, text, [options])
  • 參數說明

    參數

    類型

    是否必選

    樣本值

    說明

    fieldName

    string

    col1

    要匹配的列。匹配查詢可應用於Text類型。

    text

    string

    "tablestore is cool"

    查詢關鍵詞,即要匹配的值。

    當要匹配的列為Text類型時,查詢關鍵詞會被分詞成多個詞,分詞類型為建立多元索引時設定的分詞器類型。如果建立多元索引時未設定分詞器類型,則預設分詞類型為單字分詞。

    例如當要匹配的列為Text類型時,分詞類型為單字分詞,則查詢詞為"this is",可以匹配到“...,this is tablestore”、“is this tablestore”、“tablestore is cool”、“this"、“is”等。

    options

    string

    "or", "2"

    匹配選項。包括如下選項:

    • operator:關係邏輯符,可選值包括OR和AND,預設值為OR。

    • minimum_should_match:最小匹配個數,預設值為1。

      如果operator為OR,只有當某一行資料的fieldName列的值中至少包括最小匹配個數的詞時,才表示行資料滿足查詢條件。

      如果operator為AND,則只有分詞後的所有詞都在列值中時,才表示行資料滿足查詢條件。

  • 傳回值

    傳回值為Boolean類型,表示該行是否滿足查詢條件。取值為true時,表示滿足查詢條件;取值為false時,表示不滿足查詢條件。

  • 樣本

    以下樣本用於查詢exampletable表中col1列值匹配"tablestore is cool"字串至少2個分詞的資料。

    SELECT * FROM exampletable WHERE TEXT_MATCH(col1, "tablestore is cool", "or", "2")

    以下樣本用於查詢exampletable表中col1列值匹配"tablestore is cool"字串所有分詞的資料。

    SELECT * FROM exampletable WHERE TEXT_MATCH(col1, "tablestore is cool", "and")

短語匹配查詢

短語匹配查詢類似於TEXT_MATCH,但是分詞後多個詞的位置關係會被考慮,只有分詞後的多個詞在行資料中以同樣的順序和位置存在時,才表示行資料滿足查詢條件。

  • SQL運算式

    TEXT_MATCH_PHRASE(fieldName, text)
  • 參數說明

    參數

    類型

    是否必選

    樣本值

    說明

    fieldName

    string

    col1

    要匹配的列。匹配查詢可應用於Text類型。

    text

    string

    "tablestore is cool"

    查詢關鍵詞,即要匹配的值。

    當要匹配的列為Text類型時,查詢關鍵詞會被分詞成多個詞,分詞類型為建立多元索引時設定的分詞器類型。如果建立多元索引時未設定分詞器類型,則預設分詞類型為單字分詞。關於分詞的更多資訊,請參見分詞

    例如查詢的值為“this is”,可以匹配到“...,this is tablestore”、“this is a table”,但是無法匹配到“this table is ...”以及“is this a table”。

  • 傳回值

    傳回值為Boolean類型,表示該行是否滿足查詢條件。取值為true時,表示滿足查詢條件;取值為false時,表示不滿足查詢條件。

  • 樣本

    以下樣本用於查詢exampletable表中col1列值匹配"tablestore is cool"字串的資料。

    SELECT * FROM exampletable WHERE TEXT_MATCH_PHRASE(col1, "tablestore is cool")

相關文檔

您還可以直接使用多元索引實現全文檢索索引功能。更多資訊,請參見分詞匹配查詢短語匹配查詢