首先用下面表舉例:
| 代碼如下 |
複製代碼 |
01.CREATE TABLE articles (02.id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,03.title VARCHAR(200),04.body TEXT,05.FULLTEXT (title,body)06.) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
MySQL使用Match()和Against()執行全文檢索搜尋,舉例如下:
| 代碼如下 |
複製代碼 |
SELECT body FROM articles WHERE Match(body) Against('www.phpddt.com'); |
如上Match是正對指定的列進行搜尋,Against('www.phpddt.com')是正對指定詞進行搜尋
另外:
使用查詢擴充WITH QUERY EXPANSION,將會搜尋出更多結果(mysql會將匹配的行中有用的詞再次進行搜尋,這樣搜尋出來的結果更多,但可能不是你想要的);
使用布爾文本搜尋IN BOOLEAN MODE,類似我們平時使用搜尋引擎時用到的的文法:邏輯與、邏輯或、邏輯非等.支援的布爾操作符如下:
全文布爾操作符:
--------------------------------------------------------------------------------------------------------------
|操作符 | 說明 |
--------------------------------------------------------------------------------------------------------------
| + |包含,詞必須存在
| - |排除,詞必須不出現
| > |包含,而且增加等級值
| < |包含,且減少等級值
| () |把片語成子運算式(允許這些子運算式作為一個組被包含,排除,排列等)
| ~ |取消一個詞的排序值
| * |詞尾的萬用字元
| " " |定義一個短語(與單個詞的列表不一樣,它匹配整個短語以便包含或排除這個短語)
----------------------------------------------------------------------------------------------------------------
使用方法如下:
| 代碼如下 |
複製代碼 |
SELECT * FROM articles WHERE MATCH (title,body) AGAINST ('+apple -banana' IN BOOLEAN MODE); |
+ 表示AND,即必須包含。- 表示NOT,即不包含。
| 代碼如下 |
複製代碼 |
SELECT * FROM articles WHERE MATCH (title,body) AGAINST ('apple banana' IN BOOLEAN MODE); |
apple和banana之間是空格,空格表示OR,即至少包含apple、banana中的一個。
| 代碼如下 |
複製代碼 |
SELECT * FROM articles WHERE MATCH (title,body) AGAINST ('+apple banana' IN BOOLEAN MODE); |
必須包含apple,但是如果同時也包含banana則會獲得更高的權重。
| 代碼如下 |
複製代碼 |
SELECT * FROM articles WHERE MATCH (title,body) AGAINST ('+apple ~banana' IN BOOLEAN MODE); |
~ 是我們熟悉的異或運算子。返回的記錄必須包含apple,但是如果同時也包含banana會降低權重。但是它沒有 +apple -banana 嚴格,因為後者如果包含banana壓根就不返回。
| 代碼如下 |
複製代碼 |
SELECT * FROM articles WHERE MATCH (title,body) AGAINST ('+apple +(>banana <orange)' IN BOOLEAN MODE); |
返回同時包含apple和banana或者同時包含apple和orange的記錄。但是同時包含apple和banana的記錄的權重高於同時包含apple和orange的記錄。
linux中mysql中文全文檢索搜尋 .
| 代碼如下 |
複製代碼 |
centos6 xampp1.7.7 mysql5.5 # /opt/lampp/bin/mysql -uroot -ppassword mysql> SHOW VARIABLES LIKE 'plugin_dir'; 外掛程式路徑:/opt/lampp/lib/mysql/plugin # wget http://mysqlcft.googlecode.com/files/mysqlcft-1.0.0-x86_64-bin.tar.gz # tar zxvf mysqlcft-1.0.0-x86_64-bin.tar.gz # cp mysqlcft.so /opt/lampp/lib/mysql/plugin # /opt/lampp/bin/mysql -uroot -ppassword mysql> INSTALL PLUGIN mysqlcft SONAME 'mysqlcft.so'; mysql> SELECT * FROM mysql.plugin; mysql> SHOW PLUGINS; ALTER IGNORE TABLE articles ADD FULLTEXT INDEX cnFullIndex (title,body) WITH PARSER mysqlcft;
SELECT * FROM articles WHERE MATCH(title,body) AGAINST ('北京' IN BOOLEAN MODE |