使用匹配查詢(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")