MySQL 中 SQL 语句的匹配策略

MySQL SQL 语句的匹配策略:


1. 一般的匹配:

a. 标准SQL模式匹配

LIKENOT LIKE,以及'_''%'

b. 正则表达式匹配

REGEXPNOT REGEXP,以及很多功能强大地构造正则表达式 <!-- D(["mb","\u003c/span\>\u003c/p\>\n\n\u003cp style\u003d\"line-height:150%\"\>\u003cspan lang\u003d\"EN-US\"\>\u003cbr\>\u003c/span\>\u003c/p\>\u003cp style\u003d\"line-height:150%\"\>\u003cspan lang\u003d\"EN-US\"\>详情参考:\u003c/span\>\u003c/p\>\u003cp style\u003d\"line-height:150%\"\>\u003cspan lang\u003d\"EN-US\"\>\n\u003ca href\u003d\"http://blog.youkuaiyun.com/omohe/archive/2007/09/28/1805631.aspx\" target\u003d\"_blank\" onclick\u003d\"return top.js.OpenExtLink(window,event,this)\"\>http://blog.youkuaiyun.com/omohe\u003cWBR\>/archive/2007/09/28/1805631\u003cWBR\>.aspx\u003c/a\>\u003c/span\>\u003c/p\>\u003cp style\u003d\"line-height:150%\"\>\u003cspan lang\u003d\"EN-US\"\>\u003cbr\>\u003c/span\>\n\u003c/p\>\n\n\u003cp style\u003d\"margin-left:18pt;text-indent:-18pt;line-height:150%\"\>\u003cfont style\u003d\"color:rgb(51, 51, 255)\" size\u003d\"4\"\>\u003cb\>\u003cspan lang\u003d\"EN-US\"\>\u003cspan\>2.\u003cspan style\u003d\"font-style:normal;font-variant:normal;font-weight:normal;font-size:7pt;line-height:normal;font-size-adjust:none;font-stretch:normal\"\>\n\n\u003c/span\>\u003c/span\>\u003c/span\>\u003c/b\>\u003c/font\>\u003cb\>\u003cfont style\u003d\"color:rgb(51, 51, 255)\" size\u003d\"4\"\>\u003cspan\>全文检索:\u003c/span\>\u003c/font\>\u003cspan lang\u003d\"EN-US\"\>\u003c/span\>\u003c/b\>\u003c/p\>\n\n\u003cp style\u003d\"margin-left:18pt;text-indent:-18pt;line-height:150%;background-color:rgb(255, 255, 153)\"\>\u003cspan lang\u003d\"EN-US\"\>\u003cspan\>a.\u003cspan style\u003d\"font-style:normal;font-variant:normal;font-weight:normal;font-size:7pt;line-height:normal;font-size-adjust:none;font-stretch:normal\"\>\n\n\u003c/span\>\u003c/span\>\u003c/span\>\u003cspan\>一般全文检索\u003c/span\>\u003c/p\>\n\n\u003cp style\u003d\"line-height:150%\"\>\u003cspan lang\u003d\"EN-US\"\>SELECT * FROM name2gid_9606\nWHERE MATCH(name) AGAINST (&quot;gname&quot;);\u003c/span\>\u003c/p\>\n\n\u003cp style\u003d\"line-height:150%\"\>\u003cspan\>优点:能够对各个单词进行索引;结果有相关值并可对结果进行排序;\u003c/span\>\u003c/p\>\n\n\u003cp style\u003d\"line-height:150%\"\>\u003cspan\>缺点\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>: \u003c/span\>\u003cspan\>存在\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>50%\u003c/span\>\u003cspan\>问题\u003c/span\>\n\u003cspan lang\u003d\"EN-US\"\>(\u003c/span\>\u003cspan\>即如果一个词出现过多将被当作停滞词忽略掉\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>)\u003c/span\>\u003cspan\>,而且单词最小长度为\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>4\u003c/span\>\u003cspan\>个字符\n\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>(\u003c/span\>\u003cspan\>即长度小于\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>4\u003c/span\>\u003cspan\>个字符的单词不被建立索引\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>)\u003c/span\>\u003cspan\>;\u003c/span\>\u003c/p\>\n\n\n\u003cp style\u003d\"line-height:150%\"\>\u003cspan lang\u003d\"EN-US\"\>\u003c/span\>\u003c/p\>\n\n\u003cp style\u003d\"margin-left:18pt;text-indent:-18pt;line-height:150%;background-color:rgb(255, 255, 153)\"\>\u003cspan lang\u003d\"EN-US\"\>",1] ); //-->


详情参考:

http://blog.youkuaiyun.com/omohe<wbr></wbr>/archive/2007/09/28/1805631<wbr></wbr>.aspx


2. 全文检索:

a. 一般全文检索

SELECT * FROM name2gid_9606 WHERE MATCH(name) AGAINST ("gname");

优点:能够对各个单词进行索引;结果有相关值并可对结果进行排序;

缺点: 存在50%问题 (即如果一个词出现过多将被当作停滞词忽略掉),而且单词最小长度为4个字符 (即长度小于4个字符的单词不被建立索引)

<!-- D(["mb","\u003cspan\>b.\u003cspan style\u003d\"font-style:normal;font-variant:normal;font-weight:normal;font-size:7pt;line-height:normal;font-size-adjust:none;font-stretch:normal\"\>\n\n\u003c/span\>\u003c/span\>\u003c/span\>\u003cspan\>布尔全文检索\u003c/span\>\u003c/p\>\n\n\u003cp style\u003d\"line-height:150%\"\>\u003cspan lang\u003d\"EN-US\"\>SELECT * FROM\narticles WHERE MATCH (title,body) AGAINST (&#39;+MySQL -YourSQL&#39; IN \u003c/span\>\u003c/p\>\n\n\u003cp style\u003d\"line-height:150%\"\>\u003cspan lang\u003d\"EN-US\"\>BOOLEAN MODE);\u003c/span\>\u003c/p\>\n\n\u003cp style\u003d\"line-height:150%\"\>\u003cspan\>很优秀,有一些操作符,但要求关键词必须大于\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>4\u003c/span\>\u003cspan\>个。\u003c/span\>\u003c/p\>\n\n\u003cp style\u003d\"line-height:150%\"\>\u003cspan lang\u003d\"EN-US\"\>(\u003c/span\>\u003cspan\>详细使用可参考\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>MySQL Manual)\u003c/span\>\u003c/p\>参考总结的MySQL中的全文检索\u003cbr\>\u003cbr\>------------------------------\u003cWBR\>------------------------------\u003cWBR\>------------------------------\u003cWBR\>----------------\n\u003cbr\>\u003cbr\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>MySQL\u003c/span\>\u003cspan\>的全文搜索功能\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan\>参看:\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>\u003ca href\u003d\"http://dev.mysql.com/doc/refman/5.1/zh/functions.html#fulltext-search\" target\u003d\"_blank\" onclick\u003d\"return top.js.OpenExtLink(window,event,this)\"\>http://dev.mysql.com/doc\u003cWBR\>/refman/5.1/zh/functions.html\u003cWBR\>#fulltext-search\n\u003c/a\>\n\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cb\>\u003cspan style\u003d\"font-size:14pt;color:red\" lang\u003d\"EN-US\"\>FullText Search\u003c/span\>\u003c/b\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>1.\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>mysql&gt; CREATE TABLE articles (\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003cspan\>\n\u003c/span\>-&gt;\u003cspan\> \u003c/span\>id INT UNSIGNED\nAUTO_INCREMENT NOT NULL PRIMARY KEY,\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003cspan\>\n\u003c/span\>-&gt;\u003cspan\> \u003c/span\>title VARCHAR(200),\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003cspan\>\n\u003c/span\>-&gt;\u003cspan\> \u003c/span\>body TEXT,\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003cspan\>\n\u003c/span\>-&gt;\u003cspan\> \u003c/span\>FULLTEXT (title,body)\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003cspan\>\n\u003c/span\>-&gt; );\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003c/span\>",1] ); //--> b. 布尔全文检索

SELECT * FROM articles WHERE MATCH (title,body) AGAINST ('+MySQL -YourSQL' IN

BOOLEAN MODE);

很优秀,有一些操作符,但要求关键词必须大于4个。

(详细使用可参考MySQL Manual)

参考总结的MySQL中的全文检索

------------------------------
<wbr></wbr>------------------------------<wbr></wbr>------------------------------<wbr></wbr>----------------

MySQL的全文搜索功能

参看:http://dev.mysql.com/doc<wbr></wbr>/refman/5.1/zh/functions.html<wbr></wbr>#fulltext-search

FullText Search

1.

mysql> CREATE TABLE articles (

-> id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,

-> title VARCHAR(200),

-> body TEXT,

-> FULLTEXT (title,body)

-> );

<!-- D(["mb","\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>Query OK, 0 rows affected (0.00 sec)\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>2.\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>mysql&gt; INSERT INTO articles (title,body)\nVALUES\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003cspan\>\n\u003c/span\>-&gt; (&#39;MySQL Tutorial&#39;,&#39;DBMS stands for DataBase ...&#39;),\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003cspan\>\n\u003c/span\>-&gt; (&#39;How To Use MySQL Well&#39;,&#39;After you went through a ...&#39;),\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003cspan\>\n\u003c/span\>-&gt; (&#39;Optimizing MySQL&#39;,&#39;In this tutorial we will show ...&#39;),\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003cspan\>\n\u003c/span\>-&gt; (&#39;1001 MySQL Tricks&#39;,&#39;1. Never run mysqld as root. 2. ...&#39;),\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003cspan\>\n\u003c/span\>-&gt; (&#39;MySQL vs. YourSQL&#39;,&#39;In the following database comparison ...&#39;),\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003cspan\>\n\u003c/span\>-&gt; (&#39;MySQL Security&#39;,&#39;When configured properly, MySQL ...&#39;);\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>Query OK, 6 rows affected (0.00 sec)\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>Records: 6\u003cspan\>\n\u003c/span\>Duplicates: 0\u003cspan\> \u003c/span\>Warnings: 0\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>3.\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>mysql&gt; SELECT * FROM articles\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003cspan\>\n\u003c/span\>-&gt; WHERE MATCH (title,body) AGAINST (&#39;database&#39;);\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>+----+-------------------+----\u003cWBR\>------------------------------\u003cWBR\>--------+\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>| id | title\u003cspan\> \u003c/span\>| body\u003cspan\>\u003cWBR\> \u003c/span\>|\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003c/span\>",1] ); //-->

Query OK, 0 rows affected (0.00 sec)

2.

mysql> INSERT INTO articles (title,body) VALUES

-> ('MySQL Tutorial','DBMS stands for DataBase ...'),

-> ('How To Use MySQL Well','After you went through a ...'),

-> ('Optimizing MySQL','In this tutorial we will show ...'),

-> ('1001 MySQL Tricks','1. Never run mysqld as root. 2. ...'),

-> ('MySQL vs. YourSQL','In the following database comparison ...'),

-> ('MySQL Security','When configured properly, MySQL ...');

Query OK, 6 rows affected (0.00 sec)

Records: 6 Duplicates: 0 Warnings: 0

3.

mysql> SELECT * FROM articles

-> WHERE MATCH (title,body) AGAINST ('database');

+----+-------------------+----<wbr></wbr>------------------------------<wbr></wbr>--------+

| id | title | body<wbr></wbr>|

<!-- D(["mb","\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>+----+-------------------+----\u003cWBR\>------------------------------\u003cWBR\>--------+\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>|\u003cspan\> \u003c/span\>5\n| MySQL vs. YourSQL | In the following database comparison ... |\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>|\u003cspan\> \u003c/span\>1\n| MySQL Tutorial\u003cspan\> \u003c/span\>| DBMS stands for\nDataBase ...\u003cspan\> \u003c/span\>|\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>+----+-------------------+----\u003cWBR\>------------------------------\u003cWBR\>--------+\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>2 rows in set (0.00 sec)\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>4.\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cb\>\u003cspan style\u003d\"color:blue\" lang\u003d\"EN-US\"\>Match\u003c/span\>\u003c/b\>\u003cb\>\u003cspan style\u003d\"color:blue\"\>函数会对\u003c/span\>\u003cspan style\u003d\"color:blue\" lang\u003d\"EN-US\"\>against\u003c/span\>\u003c/b\>\u003cb\>\n\u003cspan style\u003d\"color:blue\"\>中的参数到\u003c/span\>\u003cspan style\u003d\"color:blue\" lang\u003d\"EN-US\"\>Match\u003c/span\>\u003c/b\>\u003cb\>\u003cspan style\u003d\"color:blue\"\>参数的列的资料库中做自然语言搜索,\u003c/span\>\u003cspan style\u003d\"color:blue\" lang\u003d\"EN-US\"\>\nMatch\u003c/span\>\u003c/b\>\u003cb\>\u003cspan style\u003d\"color:blue\"\>函数会返回一个相关值即搜索字符串和要\u003c/span\>\u003cspan style\u003d\"color:blue\" lang\u003d\"EN-US\"\>Match\u003c/span\>\u003c/b\>\u003cb\>\u003cspan style\u003d\"color:blue\"\>的列中的文字的一个相似性度量\n\u003c/span\>\u003cspan style\u003d\"color:blue\" lang\u003d\"EN-US\"\>\u003c/span\>\u003c/b\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>mysql&gt; SELECT id, MATCH (title,body)\nAGAINST (&#39;Tutorial&#39;) AS score\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003cspan\>\n\u003c/span\>-&gt; FROM articles ORDER BY MATCH (title,body) AGAINST (&#39;Tutorial&#39;)\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>5.\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>Match\u003c/span\>\u003cspan\>函数的搜索策略以及返回结果的相关性计算:\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan style\u003d\"background:aqua none repeat scroll 0%\" lang\u003d\"EN-US\"\>a.\nMySQL FullText\u003c/span\>\u003cspan style\u003d\"background:aqua none repeat scroll 0%\"\>将任何单字字符原形(字母、数字和下划线)的序列视为一个单词\u003cWBR\>。因此单引号\n\u003c/span\>\u003cspan style\u003d\"background:aqua none repeat scroll 0%\" lang\u003d\"EN-US\"\>",1] ); //-->

+----+-------------------+----<wbr></wbr>------------------------------<wbr></wbr>--------+

| 5 | MySQL vs. YourSQL | In the following database comparison ... |

| 1 | MySQL Tutorial | DBMS stands for DataBase ... |

+----+-------------------+----<wbr></wbr>------------------------------<wbr></wbr>--------+

2 rows in set (0.00 sec)

4.

Match函数会对against 中的参数到Match参数的列的资料库中做自然语言搜索, Match函数会返回一个相关值即搜索字符串和要Match的列中的文字的一个相似性度量

mysql> SELECT id, MATCH (title,body) AGAINST ('Tutorial') AS score

-> FROM articles ORDER BY MATCH (title,body) AGAINST ('Tutorial')

5.

Match函数的搜索策略以及返回结果的相关性计算:

a. MySQL FullText将任何单字字符原形(字母、数字和下划线)的序列视为一个单词<wbr></wbr>。因此单引号 <!-- D(["mb","&#39;\u003c/span\>\u003cspan style\u003d\"background:aqua none repeat scroll 0%\"\>\n连接的词都被视为一个单词。\u003c/span\>\u003cspan style\u003d\"background:aqua none repeat scroll 0%\" lang\u003d\"EN-US\"\>FullText\u003c/span\>\n\u003cspan style\u003d\"background:aqua none repeat scroll 0%\"\>分析程序寻找分隔符(空格,逗号以及句号等)确定单词的起始位置和\u003cWBR\>结束位置。因此,在中文里由于没有分割,因此使用\n\u003c/span\>\u003cspan style\u003d\"background:aqua none repeat scroll 0%\" lang\u003d\"EN-US\"\>FullText\u003c/span\>\u003cspan style\u003d\"background:aqua none repeat scroll 0%\"\>\n进行全文检索前需要对文本进行预处理,如添加诸如\u003c/span\>\u003cspan style\u003d\"background:aqua none repeat scroll 0%\" lang\u003d\"EN-US\"\>&quot;\n\u003c/span\>\u003cspan style\u003d\"background:aqua none repeat scroll 0%\"\>之类的分隔符。\u003c/span\>\u003cspan style\u003d\"background:aqua none repeat scroll 0%\" lang\u003d\"EN-US\"\>\n\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan style\u003d\"background:aqua none repeat scroll 0%\" lang\u003d\"EN-US\"\>b.\u003c/span\>\u003c/p\>\n\n\n\u003cp\>\u003cspan style\u003d\"background:aqua none repeat scroll 0%\"\>一些单词在全文搜索中会被忽略:\n\u003c/span\>\u003cspan style\u003d\"background:aqua none repeat scroll 0%\" lang\u003d\"EN-US\"\>\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan style\u003d\"background:aqua none repeat scroll 0%\"\>过于短的词,全文搜索所能找到的词的默认最小长度为\n\u003c/span\>\u003cspan style\u003d\"background:aqua none repeat scroll 0%\" lang\u003d\"EN-US\"\>4\u003c/span\>\u003cspan style\u003d\"background:aqua none repeat scroll 0%\"\>\n个字符;\u003c/span\>\u003cspan style\u003d\"background:aqua none repeat scroll 0%\" lang\u003d\"EN-US\"\>\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan style\u003d\"background:aqua none repeat scroll 0%\"\>停滞词\u003c/span\>\n\u003cspan style\u003d\"background:aqua none repeat scroll 0%\" lang\u003d\"EN-US\"\>\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan style\u003d\"background:aqua none repeat scroll 0%\" lang\u003d\"EN-US\"\>(\u003c/span\>\u003cspan style\u003d\"background:aqua none repeat scroll 0%\"\>\n可以通过微调\u003c/span\>\u003cspan style\u003d\"background:aqua none repeat scroll 0%\" lang\u003d\"EN-US\"\>MySQL\u003c/span\>\u003cspan style\u003d\"background:aqua none repeat scroll 0%\"\>\n全文搜索来调节默认的最小单词长度和停滞词\u003c/span\>\u003cspan style\u003d\"background:aqua none repeat scroll 0%\" lang\u003d\"EN-US\"\>)\u003c/span\>\n\u003c/p\>\n\n\u003cp\>\u003cspan style\u003d\"background:aqua none repeat scroll 0%\" lang\u003d\"EN-US\"\>c.\u003c/span\>\u003c/p\>\n\n\n\u003cp\>\u003cspan style\u003d\"background:aqua none repeat scroll 0%\"\>另外,搜索策略会对搜索的关键词的重要性进行衡量\u003cWBR\>,如果这个单词出现在许多文件中,则具有较低的重要性:\n\u003c/span\>\u003cspan style\u003d\"background:aqua none repeat scroll 0%\" lang\u003d\"EN-US\"\>(\u003c/span\>\u003cspan style\u003d\"background:aqua none repeat scroll 0%\"\>",1] ); //--> ' 连接的词都被视为一个单词。FullText 分析程序寻找分隔符(空格,逗号以及句号等)确定单词的起始位置和<wbr></wbr>结束位置。因此,在中文里由于没有分割,因此使用 FullText 进行全文检索前需要对文本进行预处理,如添加诸如" 之类的分隔符。

b.

一些单词在全文搜索中会被忽略:

过于短的词,全文搜索所能找到的词的默认最小长度为 4 个字符;

停滞词

( 可以通过微调MySQL 全文搜索来调节默认的最小单词长度和停滞词)

c.

另外,搜索策略会对搜索的关键词的重要性进行衡量<wbr></wbr>,如果这个单词出现在许多文件中,则具有较低的重要性: ( <!-- D(["mb","\n通常如果单词出现在至少全文的\u003c/span\>\u003cspan style\u003d\"background:aqua none repeat scroll 0%\" lang\u003d\"EN-US\"\>50%\u003c/span\>\u003cspan style\u003d\"background:aqua none repeat scroll 0%\"\>\n的行中,则将被视作停滞词\u003c/span\>\u003cspan style\u003d\"background:aqua none repeat scroll 0%\" lang\u003d\"EN-US\"\>)\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan style\u003d\"background:aqua none repeat scroll 0%\" lang\u003d\"EN-US\"\>\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan style\u003d\"background:aqua none repeat scroll 0%\"\>这样的话有时候使用全文搜索会很奇怪,即\n\u003c/span\>\u003cspan style\u003d\"background:aqua none repeat scroll 0%\" lang\u003d\"EN-US\"\>\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan style\u003d\"background:aqua none repeat scroll 0%\"\>例如\u003c/span\>\n\u003cspan style\u003d\"background:aqua none repeat scroll 0%\" lang\u003d\"EN-US\"\>, \u003c/span\>\u003cspan style\u003d\"background:aqua none repeat scroll 0%\"\>\n虽然单词\u003c/span\>\u003cspan style\u003d\"background:aqua none repeat scroll 0%\"\> \u003c/span\>\u003cspan style\u003d\"background:aqua none repeat scroll 0%\"\>\n&quot;\u003c/span\>\u003cspan style\u003d\"background:aqua none repeat scroll 0%\" lang\u003d\"EN-US\"\>MySQL\u003c/span\>\u003cspan style\u003d\"background:aqua none repeat scroll 0%\"\>\n&quot;\u003c/span\>\u003cspan style\u003d\"background:aqua none repeat scroll 0%\"\> \u003c/span\>\u003cspan style\u003d\"background:aqua none repeat scroll 0%\"\>\n出现在文章表中的每一行,但对这个词的搜索可能得不到任何结果:\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>mysql&gt; SELECT * FROM articles\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003cspan\>\n\u003c/span\>-&gt; WHERE MATCH (title,body) AGAINST (&#39;MySQL&#39;);\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan\>找不到搜索的词\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>(0.00 \u003c/span\>\u003cspan\>秒\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>)\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan\>这个搜索的结果为空,原因是单词\u003c/span\> \u003cspan\>&quot;\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>MySQL\u003c/span\>\u003cspan\>&quot;\u003c/span\>\n\u003cspan\>出现在至少全文的\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>50%\u003c/span\>\u003cspan\>的行中。\u003c/span\> \u003cspan\>因此\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>, \u003c/span\>\u003cspan\>它被列入停止字。\n\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cb\>\u003cspan style\u003d\"font-size:14pt;color:red\" lang\u003d\"EN-US\"\>Boolean\u003c/span\>\u003c/b\>\u003cb\>\u003cspan style\u003d\"font-size:14pt;color:red\"\>全文搜索\u003c/span\>\u003c/b\>\u003cb\>\u003cspan style\u003d\"font-size:14pt;color:red\" lang\u003d\"EN-US\"\>",1] ); //--> 通常如果单词出现在至少全文的50% 的行中,则将被视作停滞词)

这样的话有时候使用全文搜索会很奇怪,即

例如 , 虽然单词 "MySQL " 出现在文章表中的每一行,但对这个词的搜索可能得不到任何结果:

mysql> SELECT * FROM articles

-> WHERE MATCH (title,body) AGAINST ('MySQL');

找不到搜索的词(0.00 )

这个搜索的结果为空,原因是单词 "MySQL" 出现在至少全文的50%的行中。 因此, 它被列入停止字。

Boolean全文搜索 <!-- D(["mb","\n\u003c/span\>\u003c/b\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>d.\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan\>需要绕过该\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>50% \u003c/span\>\u003cspan\>限制的用户可使用布尔搜索代码\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>&lt;\u003c/span\>\u003cspan\>布尔全文搜索\u003c/span\>\n\u003cspan lang\u003d\"EN-US\"\>&gt;\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>1\u003c/span\>\u003cspan\>)语法:\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>SELECT * FROM articles WHERE MATCH\n(title,body) AGAINST (&#39;+MySQL -YourSQL&#39; IN BOOLEAN MODE);\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>2\u003c/span\>\u003cspan\>)布尔搜索的一般特点:\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>#\u003cspan\> \u003c/span\>\u003c/span\>\u003cspan\>它们不使用\u003c/span\>\u003cspan lang\u003d\"EN-US\"\> 50% \u003c/span\>\u003cspan\>域值。\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>(\u003c/span\>\u003cspan\>\n不会出现一般全文检索的那样子,如果出现次数过多反而找不到的情况\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>)\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\># \u003c/span\>\u003cspan\>它们不会按照相关性渐弱的顺序将行进行分类。\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>#\u003cspan\> \u003c/span\>\u003c/span\>\u003cspan\>即使没有\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>FULLTEXT\u003c/span\>\u003cspan\>,它们仍然可以工作,尽管这种方式的搜索执行的速度非常之慢。\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\># \u003c/span\>\u003cspan\>最小单词长度全文参数和最大单词长度全文参数均适用。\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>(\u003c/span\>\u003cspan\>依然有最小单词长度限制,默认为\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>4\u003c/span\>\u003cspan\>\n个字符\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>)\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\># \u003c/span\>\u003cspan\>停止字适用。\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>3\u003c/span\>\u003cspan\>)布尔搜索的强大之处在于其可定制性,主要定制\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>AGAINST\u003c/span\>\u003cspan\>中的搜索关键词模式:\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>+\u003c/span\>\u003cspan\>必须包含\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>,-\u003c/span\>\u003cspan\>不能出现\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>,\u003c/span\>\u003cspan\>无操作符\n\u003c/span\> \u003cspan\>可有可无\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>,&gt; ,&lt;,()\u003c/span\>\u003cspan\>组合表达式\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>,~,*\u003c/span\>\u003cspan\>通配符\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>\n,&quot;\u003c/span\>\u003cspan\>构造词组\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>(\u003c/span\>\u003cspan\>注意非单词字符不算\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>)\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>4\u003c/span\>\u003cspan\>)\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan\>一些实例:\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan\>包含至少两个单词中的一个的行,\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>&#39;apple banana&#39;;\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan\>两个单词都包含的行\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>,&#39;+apple\n+juice&#39;;\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan\>包含单词\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>",1] ); //-->

d.

需要绕过该50% 限制的用户可使用布尔搜索代码<布尔全文搜索 >

1)语法:

SELECT * FROM articles WHERE MATCH (title,body) AGAINST ('+MySQL -YourSQL' IN BOOLEAN MODE);

2)布尔搜索的一般特点:

# 它们不使用 50% 域值。( 不会出现一般全文检索的那样子,如果出现次数过多反而找不到的情况)

# 它们不会按照相关性渐弱的顺序将行进行分类。

# 即使没有FULLTEXT,它们仍然可以工作,尽管这种方式的搜索执行的速度非常之慢。

# 最小单词长度全文参数和最大单词长度全文参数均适用。(依然有最小单词长度限制,默认为4 个字符)

# 停止字适用。

3)布尔搜索的强大之处在于其可定制性,主要定制AGAINST中的搜索关键词模式:

+必须包含,-不能出现,无操作符 可有可无,> ,<,()组合表达式,~,*通配符 ,"构造词组(注意非单词字符不算)

4

一些实例:

包含至少两个单词中的一个的行,'apple banana';

两个单词都包含的行,'+apple +juice';

包含单词 <!-- D(["mb","&quot;apple&quot;\u003c/span\>\u003cspan\>的行,若这些行也包含单词&quot;\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>macintosh\u003c/span\>\u003cspan\>\n&quot;,则列为更高等级,\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>&#39;+apple macintosh&#39;;\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan\>包含\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>&quot;apple&quot;\u003c/span\>\u003cspan\>,不包含\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>&quot;macintosh&quot;\u003c/span\>\u003cspan\>\n的行,\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>&#39;+apple -macintosh&#39;;\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>&#39;+apple +(&gt;turnover &lt;strudel)&#39;\u003c/span\>\u003cspan\>,包含\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>apple\u003c/span\>\u003cspan\>和\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>\ntunover\u003c/span\>\u003cspan\>或者包含\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>apple\u003c/span\>\u003cspan\>和\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>strudel\u003c/span\>\u003cspan\>的行,而且包含\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>\napple turnover\u003c/span\>\u003cspan\>的行比包含\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>apple strudel\u003c/span\>\u003cspan\>的行排列等级更高;\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>&#39;apple*&#39;,\u003c/span\>\u003cspan\>匹配\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>apple,apples\u003c/span\>\u003cspan\>等通配符;\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>&#39;&quot;some words&quot;&#39;\u003c/span\>\u003cspan\>寻找包含短语\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>&quot;some words&quot;\u003c/span\>\u003cspan\>的行\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>\n(\u003c/span\>\u003cspan\>会找到\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>&quot;some words of wisdom&quot;\u003c/span\>\u003cspan\>的行,而不会找到\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>&quot;some noise words&quot;\u003c/span\>\u003cspan\>\n的行\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>)\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>5\u003c/span\>\u003cspan\>)我的这里可能使用\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan\>第一个\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>,\u003c/span\>\u003cspan\>以及通配符的情况较多等。\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>e.\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan\>全文搜索带查询扩展:\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan\>带有查询扩展功能的全文检索,\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>WITH\nQUERY EXPANSION\u003c/span\>\u003cspan\>;\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan\>注意优点和缺点;\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan\>注意:盲查询扩展功能很容易返回非相关文件而增加无用信息\u003cWBR\>,因此只有在查询一个长度很短的短语时才有必要使用这项功能。\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>f.\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan\>全文停滞词\u003c/span\>\u003c/p\>\n\n\u003cp\>",1] ); //--> "apple"的行,若这些行也包含单词"macintosh ",则列为更高等级,'+apple macintosh';

包含"apple",不包含"macintosh" 的行,'+apple -macintosh';

'+apple +(>turnover <strudel)',包含apple tunover或者包含applestrudel的行,而且包含 apple turnover的行比包含apple strudel的行排列等级更高;

'apple*',匹配apple,apples等通配符;

'"some words"'寻找包含短语"some words"的行 (会找到"some words of wisdom"的行,而不会找到"some noise words" 的行)

5)我的这里可能使用

第一个,以及通配符的情况较多等。

e.

全文搜索带查询扩展:

带有查询扩展功能的全文检索,WITH QUERY EXPANSION

注意优点和缺点;

注意:盲查询扩展功能很容易返回非相关文件而增加无用信息<wbr></wbr>,因此只有在查询一个长度很短的短语时才有必要使用这项功能。

f.

全文停滞词

<!-- D(["mb","\u003cspan lang\u003d\"EN-US\"\>\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>g.\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan\>全文限定条件\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>h.\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan\>微调\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>MySQL\u003c/span\>\u003cspan\>全文搜索\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>(MySQL\u003c/span\>\u003cspan\>是\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>\nopen source\u003c/span\>\u003cspan\>的,可以修改源代码来订制和安装\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>MySQL)\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>1)\u003c/span\>\u003cspan\>调节全文搜索参数的时候需要慎重,因为大多数情况只能降低其性能\u003cWBR\>,除非非常了解自己在做什么。\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>2)\u003c/span\>\u003cspan\>另外,一些变量的改变需要重建表中的\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>FULLTEXT\u003c/span\>\u003cspan\>索引;\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>3)\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan\>可以修改编入索引单词的最小长度和最大长度;\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan\>等等。。。\u003c/span\>\u003c/p\>\n\n\u003cbr\>\n",0] ); D(["ce"]); //-->

g.

全文限定条件

h.

微调MySQL全文搜索(MySQL open source的,可以修改源代码来订制和安装MySQL)

1)调节全文搜索参数的时候需要慎重,因为大多数情况只能降低其性能<wbr></wbr>,除非非常了解自己在做什么。

2)另外,一些变量的改变需要重建表中的FULLTEXT索引;

3)

可以修改编入索引单词的最小长度和最大长度;

等等。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值