日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

全文檢索

更新時間:

本文介紹如何通過全文索引函數match() against()、match() fuzzy()、match() phrase()進行全文檢索以及如何高亮全文檢索關鍵詞。

前提條件

已創建全文索引。如何創建,請參見創建全文索引。

示例數據

本文所有示例均基于示例表tbl_fulltext_demo。每個全文索引都使用了不同的分詞器,示例表的建表語句和數據寫入語句如下。

CREATE TABLE `tbl_fulltext_demo` (
  `id` int,
  `content` varchar,
  `content_alinlp` varchar,
  `content_ik` varchar,
  `content_standard` varchar,
  `content_ngram` varchar,
  FULLTEXT INDEX fidx_c(`content`),  // 使用默認分詞器
  FULLTEXT INDEX fidx_alinlp(`content_alinlp`) WITH ANALYZER alinlp,
  FULLTEXT INDEX fidx_ik(`content_ik`) WITH ANALYZER ik,
  FULLTEXT INDEX fidx_standard(`content_standard`) WITH ANALYZER standard,
  FULLTEXT INDEX fidx_ngram(`content_ngram`) WITH ANALYZER ngram,
  PRIMARY KEY (`id`)
) DISTRIBUTED BY HASH(id);



INSERT INTO tbl_fulltext_demo(id, content, content_alinlp, content_ik, content_standard, content_ngram) 
VALUES(1, '客戶需要更好的產品和服務', '客戶需要更好的產品和服務', '客戶需要更好的產品和服務', '客戶需要更好的產品和服務', '客戶需要更好的產品和服務')
,(2, '武漢市長江大橋','武漢市長江大橋','武漢市長江大橋','武漢市長江大橋', '武漢市長江大橋')
,(3, 'Hangzhou, Zhejiang Province','Hangzhou, Zhejiang Province', 'Hangzhou, Zhejiang Province', 'Hangzhou, Zhejiang Province', 'Hangzhou, Zhejiang Province')
,(4, '產品的用戶價值和商業價值','產品的用戶價值和商業價值', '產品的用戶價值和商業價值', '產品的用戶價值和商業價值', '產品的用戶價值和商業價值');
                

注意事項

  • 全文索引函數支持使用特殊字符+-&|!(){}[]^"~*?:\/,但需要對特殊字符進行轉義處理,轉義符為\\。

    例如,需要檢索包含春天/美景的數據,錯誤寫法為match(content) against('春天 / 美景' ),正確寫法為match(content) against('春天 \\/ 美景')

  • 全文索引函數不支持=、!=、between、is nullis not null以及like等操作符。

match() against()

match() against()支持詞條匹配和精確匹配,對指定列查找與關鍵詞匹配的內容。

語法

SELECT * FROM `table_name` WHERE match (column_name[ , ... ]) against('term')

參數說明

  • table_name:檢索的數據表。

  • column_name:檢索的數據列。如果對多個列進行檢索,列名之間用英文逗號(,)隔開。

  • term:檢索的關鍵詞。關鍵詞查詢時支持如下邏輯操作符:

    • AND:檢索出同時匹配所有關鍵詞的內容。

    • OR:檢索出匹配其中一個關鍵詞的內容。

    • NOT:檢索出與邏輯操作符左側關鍵詞匹配,但與右側關鍵詞不匹配的內容。

    說明

    邏輯操作符不區分大小寫。

示例一:單列查詢

SELECT id, content
FROM `tbl_fulltext_demo`
WHERE MATCH (`content`) AGAINST ('產品服務');

返回結果:

+------+--------------------------------------+
| id   | content                              |
+------+--------------------------------------+
| 4    |產品的用戶價值和商業價值              |
+------+--------------------------------------+
| 1    | 客戶需要更好的產品和服務             |
+------+--------------------------------------+

示例二:多列查詢

在匹配多列時,不需要創建多列聯合索引,只要多列條件中的每一列具有全文索引,即可進行多列聯合全文索引查詢。

SELECT id, content, content_alinlp
FROM `tbl_fulltext_demo`
WHERE MATCH (content, content_alinlp) AGAINST ('服務');

SELECT id, content, content_alinlp
FROM `tbl_fulltext_demo`
WHERE MATCH (content) AGAINST ('服務')
OR MATCH (content_alinlp) AGAINST ('服務');
說明

以上兩個查詢語句的作用相同。

返回結果:

+------+-----------------------------+------------------------------+
| id   | content                     | content_alinlp               |
+------+-----------------------------+------------------------------+
| 1    | 客戶需要更好的產品和服務    | 客戶需要更好的產品和服務     |
+------+-----------------------------+------------------------------+

示例三:布爾查詢

  • 使用AND邏輯操作符,檢索匹配所有關鍵詞的內容。

    SELECT * FROM `tbl_fulltext_demo` WHERE MATCH (content) AGAINST ('產品 AND 服務');

    返回結果:

    +------+--------------------------------+--------------------------------+-----------------------------+--------------------------------------+--------------------------------------+
    | id   | content                        | content_alinlp                 | content_ik                  | content_standard                     | content_ngram                        |
    +------+--------------------------------+--------------------------------+-----------------------------+--------------------------------------+--------------------------------------+
    |    1 | 客戶需要更好的產品和服務         | 客戶需要更好的產品和服務         | 客戶需要更好的產品和服務       | 客戶需要更好的產品和服務               | 客戶需要更好的產品和服務               |
    +------+--------------------------------+--------------------------------+-----------------------------+--------------------------------------+--------------------------------------+
  • 使用OR操作符,檢索匹配任意關鍵詞的內容。

    SELECT * FROM `tbl_fulltext_demo` WHERE MATCH (content) AGAINST ('產品 OR 服務');

    返回結果:

    +------+--------------------------------+--------------------------------+-----------------------------+--------------------------------------+--------------------------------------+
    | id   | content                        | content_alinlp                 | content_ik                  | content_standard                     | content_ngram                        |
    +------+--------------------------------+--------------------------------+-----------------------------+--------------------------------------+--------------------------------------+
    |    4 | 產品的用戶價值和商業價值         | 產品的用戶價值和商業價值         | 產品的用戶價值和商業價值       |產品的用戶價值和商業價值                | 產品的用戶價值和商業價值               |
    +------+--------------------------------+--------------------------------+-----------------------------+--------------------------------------+--------------------------------------+
    |    1 | 客戶需要更好的產品和服務         | 客戶需要更好的產品和服務         | 客戶需要更好的產品和服務       | 客戶需要更好的產品和服務               |  客戶需要更好的產品和服務              |
    +------+--------------------------------+--------------------------------+-----------------------------+--------------------------------------+--------------------------------------+
  • 使用NOT操作符,檢索只匹配邏輯操作符左側關鍵詞的內容。

    SELECT * FROM `tbl_fulltext_demo` WHERE MATCH (content) AGAINST ('產品 NOT 服務');

    返回結果:

    +------+--------------------------------+--------------------------------+-----------------------------+--------------------------------------+--------------------------------------+
    | id   | content                        | content_alinlp                 | content_ik                  | content_standard                     | content_ngram                        |
    +------+--------------------------------+--------------------------------+-----------------------------+--------------------------------------+--------------------------------------+
    |    4 | 產品的用戶價值和商業價值         | 產品的用戶價值和商業價值          | 產品的用戶價值和商業價值      | 產品的用戶價值和商業價值               | 產品的用戶價值和商業價值               |
    +------+--------------------------------+--------------------------------+-----------------------------+--------------------------------------+--------------------------------------+
  • 使用NOT操作符,檢索出與邏輯操作符右側關鍵詞不匹配的內容。

    SELECT * FROM `tbl_fulltext_demo` WHERE MATCH (content) AGAINST ('*:* NOT 服務');
    重要

    *:*表示所有JSON文檔,僅在邏輯操作符的左側使用,并且只能放在表達式的起始位置。

    返回結果:

    +------+--------------------------------+--------------------------------+-----------------------------+--------------------------------------+--------------------------------------+
    | id   |           content              |          content_alinlp        |          content_ik         |          content_standard            |       content_ngram                  |
    +------+--------------------------------+--------------------------------+-----------------------------+--------------------------------------+--------------------------------------+
    |    2 |        武漢市長江大橋          |        武漢市長江大橋          |         武漢市長江大橋      |         武漢市長江大橋               |            武漢市長江大橋             |
    +------+--------------------------------+--------------------------------+-----------------------------+--------------------------------------+--------------------------------------+
    |    4 |    產品的用戶價值和商業價值    |    產品的用戶價值和商業價值    |  產品的用戶價值和商業價值   |     產品的用戶價值和商業價值          |       產品的用戶價值和商業價值       |
    +------+--------------------------------+--------------------------------+-----------------------------+--------------------------------------+--------------------------------------+
    |    3 |  Hangzhou, Zhejiang Province   | Hangzhou, Zhejiang Province    | Hangzhou, Zhejiang Province |      Hangzhou, Zhejiang Province     |      Hangzhou, Zhejiang Province     |
    +------+--------------------------------+--------------------------------+-----------------------------+--------------------------------------+--------------------------------------+
  • 使用括號構造復雜的布爾查詢:

    SELECT id, content_alinlp
    FROM `tbl_fulltext_demo`
    WHERE MATCH (content_alinlp) AGAINST ('(武漢 OR 杭州) AND (大橋 OR 西湖)');

    返回結果:

    +------+-----------------------+
    | id   | content_alinlp        |
    +------+-----------------------+
    |    2 | 武漢市長江大橋         |
    +------+-----------------------+

示例四:結果集過濾

全文檢索會返回所有跟關鍵詞近似的結果。在某些數據量很大的場景中,查詢關鍵詞的結果集也很大,但是只需要取出近似度較高的結果,因此AnalyticDB for MySQL提供了結果集過濾的功能。

以下示例過濾掉90%的低近似度結果,只返回近似度排在前10%的結果。

SELECT id, content
FROM `tbl_fulltext_demo`
WHERE MATCH (content) AGAINST ('產品服務') > 0.9;

返回結果:

+------+--------------------------------------+
| id   | content                              |
+------+--------------------------------------+
|    4 | 產品的用戶價值和商業價值               |
+------+--------------------------------------+
|    1 | 客戶需要更好的產品和服務               |
+------+--------------------------------------+

示例五:近似度分數與排序

AnalyticDB for MySQL支持獲取結果集的近似度分數,以及按照近似度分數排序的功能。

  • 查詢近似度分數。

    SELECT id, content, MATCH (content) AGAINST ('產品服務') AS score
    FROM `tbl_fulltext_demo`
    WHERE MATCH (content) AGAINST ('產品服務') > 0.9;
    說明

    WHERE MATCH (content) AGAINST ('產品服務') > 0.9表示過濾掉90%的低近似度結果,只返回近似度排在前10%的結果。

    默認情況下,返回的結果集不會按照近似度分數排序:

    +------+--------------------------------------+----------------------+
    | id   | content                              | score                |
    +------+--------------------------------------+----------------------+
    |    4 | 產品的用戶價值和商業價值               | 0.13076457381248474  |
    +------+--------------------------------------+----------------------+
    |    1 | 客戶需要更好的產品和服務               | 1.1090354919433594   |
    +------+--------------------------------------+----------------------+

    SELECT投影中的match(content) against ('武漢') 不需要和WHERE查詢條件中的match(content) against ('產品服務') 語句保持一致。以下語句可以查詢match(content) against ('武漢') 的近似度分數。

    SELECT *, MATCH (content) AGAINST ('武漢') AS score
    FROM `tbl_fulltext_demo`
    WHERE MATCH (content) AGAINST ('產品服務') > 0.9
    ORDER BY score DESC;

    返回結果:

    +------+--------------------------------+--------------------------------+-----------------------------+-------------------------------------+--------------------------------------+-------------+
    | id   | content                        | content_alinlp                 | content_ik                  | content_standard                    | content_ngram                        |score        |
    +------+--------------------------------+--------------------------------+-----------------------------+-------------------------------------+--------------------------------------+-------------+
    |    4 | 產品的用戶價值和商業價值         | 產品的用戶價值和商業價值         | 產品的用戶價值和商業價值       | 產品的用戶價值和商業價值              | 產品的用戶價值和商業價值               |0.0          |
    +------+--------------------------------+--------------------------------+-----------------------------+-------------------------------------+--------------------------------------+-------------+
    |    1 | 客戶需要更好的產品和服務         | 客戶需要更好的產品和服務         | 客戶需要更好的產品和服務       |客戶需要更好的產品和服務               |  客戶需要更好的產品和服務              |0.0          |
    +------+--------------------------------+--------------------------------+-----------------------------+-------------------------------------+--------------------------------------+-------------+
  • 按近似度排序。

    使用ORDER BY語句,并按近似度降序排序。

    SELECT id, content, MATCH (content) AGAINST ('產品服務') AS score
    FROM `tbl_fulltext_demo`
    WHERE MATCH (content) AGAINST ('產品服務') > 0.9
    ORDER BY score DESC;

    返回結果:

    +------+--------------------------------------+---------------------+
    | id   | content                              | score               |
    +------+--------------------------------------+---------------------+
    |    1 | 客戶需要更好的產品和服務               | 1.1090354919433594  |
    +------+--------------------------------------+---------------------+
    |    4 | 產品的用戶價值和商業價值               | 0.13076457381248474 |
    +------+--------------------------------------+---------------------+

示例六:詞條匹配

默認情況下,全文檢索會先對詞語進行分詞后,再進行檢索。如果關鍵詞不添加雙引號,查詢結果只需要與任意一個關鍵詞匹配,就可以返回結果。

Alinlp分詞器將“產品和服務”分詞為“產品”、“和”與“服務”,將“產品服務”分詞為“產品”與“服務”。

SELECT id, content_alinlp, MATCH (content_alinlp) AGAINST ('產品服務') AS score
FROM `tbl_fulltext_demo`
WHERE MATCH (content_alinlp) AGAINST ('產品服務') > 0.9
ORDER BY score DESC;

只需要匹配“產品服務”中的任意一個關鍵詞,就能得到返回結果:

+------+--------------------------------------+---------------------+
| id   | content_alinlp                       | score               |
+------+--------------------------------------+---------------------+
|    1 | 客戶需要更好的產品和服務               | 0.5953410863876343  |
+------+--------------------------------------+---------------------+
|    4 | 產品的用戶價值和商業價值               | 0.13076457381248474 |
+------+--------------------------------------+---------------------+

示例七:精確匹配

如果關鍵詞添加雙引號,分詞器不會對雙引號中的關鍵詞進行分詞,指定列中的數據需要完全匹配雙引號中的關鍵詞,才能返回結果。

  • 檢索與關鍵詞產品服務精確匹配的內容。

    SELECT id, content_alinlp, MATCH (content_alinlp) AGAINST ('"產品服務"') AS score
    FROM `tbl_fulltext_demo`
    WHERE MATCH (content_alinlp) AGAINST ('"產品服務"') > 0.9
    ORDER BY score DESC;

    精確匹配關鍵詞“產品服務”的返回結果為空:

    Empty set
  • 檢索與關鍵詞產品和服務精確匹配的內容。

    SELECT id, content_alinlp, MATCH (content_alinlp) AGAINST ('"產品和服務"') AS score
    FROM `tbl_fulltext_demo`
    WHERE MATCH (content_alinlp) AGAINST ('"產品和服務"') > 0.9
    ORDER BY score DESC; 

    返回結果:

    +------+--------------------------------------+--------------------+
    | id   | content_alinlp                       | score              |
    +------+--------------------------------------+--------------------+
    |    1 | 客戶需要更好的產品和服務               | 0.8930116891860962 |
    +------+--------------------------------------+--------------------+

match() fuzzy()

match()fuzzy()支持模糊匹配查詢,基于Levenshtein Edit Distance(萊溫斯坦編輯距離),對檢索的文本進行模糊匹配。在一些輸入出現錯誤的場景下,使用模糊匹配查詢功能可以在一定程度上查詢出與關鍵詞相近的內容。

語法

SELECT * FROM `table_name` WHERE match (`column_name`) fuzzy('term') [max_edits(n)];

參數說明

  • table_name:檢索的數據表。

  • column_name:檢索的數據列。

  • term:檢索的關鍵詞。

  • max_edits(n):最大編輯距離(可選),也就是字符串A變成字符串B所需要的最小變化(插入,刪除或者替換)的次數。默認值為2,取值范圍是0~2之間的整數。例如:windos進行1次變化,插入字符w,變成windows,所以windoswindows最大編輯距離為1。

示例一:相近查詢

SELECT id, content
FROM tbl_fulltext_demo
WHERE MATCH(content_standard) FUZZY('hangzou');

返回結果:

+------+-----------------------------+
| id   | content                     |
+------+-----------------------------+
|    3 | Hangzhou, Zhejiang Province |
+------+-----------------------------+

示例二:編輯距離為1的相近查詢

SELECT id, content
FROM tbl_fulltext_demo
WHERE MATCH(content_standard) FUZZY('hangzou') max_edits(1);

返回結果:

+------+-----------------------------+
| id   | content                     |
+------+-----------------------------+
|    3 | Hangzhou, Zhejiang Province |
+------+-----------------------------+

示例三:編輯距離為2的相近查詢

SELECT id, content
FROM tbl_fulltext_demo
WHERE MATCH(content_standard) FUZZY('武漢長') max_edits(2);

返回結果:

+------+-----------------------+
| id   | content               |
+------+-----------------------+
|    2 | 武漢市長江大橋         |
+------+-----------------------+

match() phrase()

match() phrase()支持短語查詢,對指定列查找匹配多個關鍵詞的內容。在多個關鍵詞都匹配的情況下,您可以將slop參數作為判斷是否滿足短語查詢的另一個依據。

語法

SELECT * FROM `table_name` WHERE match (`column_name`) phrase('term1 term2') [slop(n)]

參數說明

  • table_name:檢索的數據表。

  • column_name:檢索的數據列。

  • term1 term2:檢索的關鍵詞列表,關鍵詞之間用空格隔開,關鍵詞的順序將影響匹配的結果。

  • slop(n):最大移動步長(可選)。使用分詞器對文本分詞得到詞條列表后,按照順序對每個詞條從0開始依次遞增標記序號位置,通過左右移動詞條使其與phrase參數指定的關鍵詞列表匹配。默認值是0,取值范圍是0~6之間的整數。例如,對“商品和服務”使用Standard分詞器分詞,結果是“商”、“品”、“和”、“服”和“務”。

    文本

    序號位置

    0

    1

    2

    3

    4

    • phrase('商 和'):slop距離是1,表示“商”往右移動1個步長或“和”往左移動1個步長。

    • phrase('商 服'):slop距離是2,表示“商”往右移動2個步長或“服”往左移動2個步長。

示例一:英文短語查詢

AnalyticDB for MySQL內置的Standard分詞器,在默認配置的情況下對“Hangzhou, Zhejiang Province”分詞為“Hangzhou”、“Zhejiang”和“Province”。

  • 檢索與關鍵詞zhejiang hangzhou 匹配的內容。

    SELECT id, content
    FROM tbl_fulltext_demo
    WHERE MATCH(content_standard) PHRASE('zhejiang hangzhou');

    slop參數默認設置為0,檢索與關鍵詞zhejiang hangzhou 匹配的內容,返回結果為空:

    Empty set
  • 檢索移動1個步長后與關鍵詞hangzhou Province匹配的內容。

    SELECT id, content
    FROM tbl_fulltext_demo
    WHERE MATCH(content_standard) PHRASE('hangzhou Province') slop(1);

    返回結果:

    +------+-----------------------------+
    | id   | content                     |
    +------+-----------------------------+
    |    3 | Hangzhou, Zhejiang Province |
    +------+-----------------------------+
  • 檢索移動2個步長后與關鍵詞zhejiang hangzhou匹配的內容。

    SELECT id, content
    FROM tbl_fulltext_demo
    WHERE MATCH(content_standard) PHRASE('zhejiang hangzhou') slop(2);

    返回結果:

    +------+-----------------------------+
    | id   | content                     |
    +------+-----------------------------+
    |    3 | Hangzhou, Zhejiang Province |
    +------+-----------------------------+

示例二:中文短語查詢

match() phrase()中文短語匹配場景下,使用內置的Alinlp分詞器和Ngram分詞器分詞可能會導致中文匹配查詢數據失敗。因此推薦您使用Standard Analyzer分詞器和Ik Analyzer分詞器。

  • 檢索經過移動1個步長后與關鍵詞產品 服務匹配的內容。

    SELECT id, content
    FROM tbl_fulltext_demo
    WHERE MATCH(content_ik) PHRASE('產品 服務') slop(1);

    返回結果:

    +------+--------------------------------------+
    | id   | content                              |
    +------+--------------------------------------+
    |    1 | 客戶需要更好的產品和服務               |
    +------+--------------------------------------+
  • 檢索經過移動2個步長后與關鍵詞產 服匹配的內容。

    SELECT id, content
    FROM tbl_fulltext_demo
    WHERE MATCH(content_standard) PHRASE('產 服') slop(2);

    返回結果:

    +------+--------------------------------------+
    | id   | content                              |
    +------+--------------------------------------+
    |    1 | 客戶需要更好的產品和服務               |
    +------+--------------------------------------+

高亮支持

使用函數高亮

AnalyticDB for MySQL支持使用fulltext_highlight(`column_name`)函數對全文索引列中的關鍵詞進行高亮。

示例一:MATCH() AGAINST()關鍵詞高亮

  • 對單列查詢進行高亮。

    SELECT MATCH (content_alinlp) AGAINST ('武漢長江') AS score, fulltext_highlight(content_alinlp)
    FROM tbl_fulltext_demo
    WHERE MATCH (content_alinlp) AGAINST ('武漢長江') > 0.9
    ORDER BY score DESC LIMIT 3;

    返回結果:

    +--------------------+-----------------------------------------+
    | score              | fulltext_highlight(content_alinlp)      |
    +--------------------+-----------------------------------------+
    | 0.2615291476249695 | <em>武漢</em>市<em>長江</em>大橋         |
    +--------------------+-----------------------------------------+
  • 對多列查詢進行高亮。

    SELECT MATCH (content_alinlp) AGAINST ('武漢長江') AS score, fulltext_highlight(content_alinlp)
    FROM tbl_fulltext_demo
    WHERE MATCH (content_alinlp) AGAINST ('武漢長江') > 0.9
    AND MATCH (content_alinlp) AGAINST ('大橋') > 0.9
    ORDER BY score DESC LIMIT 3;

    返回結果:

    +--------------------+--------------------------------------------------+
    | score              | fulltext_highlight(content_alinlp)               |
    +--------------------+--------------------------------------------------+
    | 0.2615291476249695 | <em>武漢</em>市<em>長江</em><em>大橋</em>         |
    +--------------------+--------------------------------------------------+

示例二:MATCH() FUZZY()關鍵詞高亮

SELECT id, MATCH(content_standard) FUZZY('武漢長') as score, fulltext_highlight(content_standard)
FROM tbl_fulltext_demo
WHERE MATCH(content_standard) FUZZY('武漢長');

返回結果:

+------+-------+--------------------------------------------------+
| id   | score | fulltext_highlight(content_standard)             |
+------+-------+--------------------------------------------------+
|    2 |   0.0 | <em>武</em><em>漢</em>市<em>長</em>江大橋         |
+------+-------+--------------------------------------------------+

示例三:MATCH() PHRASE()關鍵詞高亮

SELECT id, MATCH(content_ik) PHRASE('產品 服務') slop(1) as score, fulltext_highlight(content_ik)
FROM tbl_fulltext_demo
WHERE MATCH(content_ik) PHRASE('產品 服務') slop(1);

返回結果:

+------+--------------------+--------------------------------------------------------+
| id   | score              | fulltext_highlight(content_ik)                         |
+------+--------------------+--------------------------------------------------------+
|    1 | 0.6931471824645996 | 客戶需要更好的<em>產品</em>和<em>服務</em>               |
+------+--------------------+--------------------------------------------------------+

使用hint自定義高亮

AnalyticDB for MySQL全文檢索的高亮默認使用<em>和</em>標簽,您也可以使用hint設定fulltext_highlight_pre_tagfulltext_highlight_post_tag的值定義全文高亮的左右標簽。

示例一:MATCH() AGAINST()自定義高亮

/*+ fulltext_highlight_pre_tag=<span>,fulltext_highlight_post_tag=</span>*/
SELECT MATCH (content_alinlp) AGAINST ('武漢長江') AS score, fulltext_highlight(content_alinlp)
FROM tbl_fulltext_demo
WHERE MATCH (content_alinlp) AGAINST ('武漢長江') > 0.9
ORDER BY score DESC LIMIT 3;

返回結果:

+--------------------+-------------------------------------------------+
| score              | fulltext_highlight(content_alinlp)              |
+--------------------+-------------------------------------------------+
| 0.2615291476249695 | <span>武漢</span>市<span>長江</span>大橋         |
+--------------------+-------------------------------------------------+

示例二:MATCH() FUZZY()自定義高亮

/*+ fulltext_highlight_pre_tag=<span>,fulltext_highlight_post_tag=</span>*/
SELECT MATCH (content_alinlp) FUZZY ('武漢長江') AS score, fulltext_highlight(content_alinlp)
FROM tbl_fulltext_demo
WHERE MATCH (content_alinlp) FUZZY ('武漢長江') > 0.9
ORDER BY score DESC LIMIT 3;

返回結果:

+--------------------+-------------------------------------------------+
| score              | fulltext_highlight(content_alinlp)              |
+--------------------+-------------------------------------------------+
| 0.0                | <span>武漢</span>市<span>長江</span>大橋         |
+--------------------+-------------------------------------------------+

示例三:MATCH() PHRASE()自定義高亮

/*+ fulltext_highlight_pre_tag=<span>,fulltext_highlight_post_tag=</span>*/
SELECT MATCH (content_alinlp) PHRASE ('武漢') AS score, fulltext_highlight(content_alinlp)
FROM tbl_fulltext_demo
WHERE MATCH (content_alinlp) PHRASE ('武漢') > 0.9
ORDER BY score DESC LIMIT 3;

返回結果:

+--------------------+---------------------------------------------------------------+
| score              | fulltext_highlight(content_alinlp)                            |
+--------------------+---------------------------------------------------------------+
| 0.8930116891860962 | 客戶需要更好的<span>產品</span><span>和</span><span>服務</span> |
+--------------------+---------------------------------------------------------------+