真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

mysql全文模糊搜索MATCHAGAINST方法示例

MySQL 4.x以上提供了全文檢索支持 MATCH ……AGAINST 模式(不區(qū)分大小寫)

10年積累的網(wǎng)站建設(shè)、成都做網(wǎng)站經(jīng)驗(yàn),可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先建設(shè)網(wǎng)站后付款的網(wǎng)站建設(shè)流程,更有建德免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

建立全文索引的表的存儲(chǔ)引擎類型必須為MyISAM

問題是match against對中文模糊搜索支持不是太好

新建一個(gè)utf8 MyISAM類型的表并建立一個(gè)全文索引 :

CREATE TABLE articles (
  id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
  title VARCHAR(200),
  body TEXT,
  FULLTEXT (title,body)
) ENGINE=MyISAM DEFAULT >

其中FULLTEXT(title, body) 給title和body這兩列建立全文索引,之后檢索的時(shí)候注意必須同時(shí)指定這兩列。

給這個(gè)表添加點(diǎn)測試數(shù)據(jù)

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 ...');

全文檢索測試

SELECT * FROM articles  WHERE MATCH (title,body) AGAINST ('database'); 

注意 MATCH (title,body) 里面的值必須是前面建立全文索引的兩個(gè)字段不能少。

mysql 默認(rèn)支持全文檢索的字符長度是4,可以用SHOW VARIABLES LIKE 'ft_min_word_len' 來查看指定的字符長度,也可以在mysql配置文件my.ini 更改最小字符長度,方法是在my.ini 增加一行 比如:ft_min_word_len = 2,改完后重啟mysql即可。

另外,MySQL還會(huì)計(jì)算一個(gè)詞的權(quán)值,以決定是否出現(xiàn)在結(jié)果集中,具體如下:

mysql在集和查詢中的對每個(gè)合適的詞都會(huì)先計(jì)算它們的權(quán)重,一個(gè)出現(xiàn)在多個(gè)文檔中的詞將有較低的權(quán)重(可能甚至有一個(gè)零權(quán)重),因?yàn)樵谶@個(gè)特定的集中,它有較低的語義值。否則,如果詞是較少的,它將得到一個(gè)較高的權(quán)重,mysql默認(rèn)的閥值是50%,上面‘you'在每個(gè)文檔都出現(xiàn),因此是100%,只有低于50%的才會(huì)出現(xiàn)在結(jié)果集中。

全文檢索語法

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中的一個(gè)。

SELECT * FROM articles WHERE MATCH (title,body)   AGAINST ('+apple banana' IN BOOLEAN MODE); 

必須包含apple,但是如果同時(shí)也包含banana則會(huì)獲得更高的權(quán)重。

SELECT * FROM articles WHERE MATCH (title,body)   AGAINST ('+apple ~banana' IN BOOLEAN MODE);

 ~ 是我們熟悉的異或運(yùn)算符。返回的記錄必須包含apple,但是如果同時(shí)也包含banana會(huì)降低權(quán)重。 但是它沒有 +apple -banana 嚴(yán)格,因?yàn)楹笳呷绻琤anana壓根就不返回。

SELECT * FROM articles WHERE MATCH (title,body)   AGAINST ('+apple +(>banana 

返回同時(shí)包含apple和banana或者同時(shí)包含apple和orange的記錄。但是同時(shí)包含apple和banana的記錄的權(quán)重高于同時(shí)包含apple和orange的記錄。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。


文章標(biāo)題:mysql全文模糊搜索MATCHAGAINST方法示例
標(biāo)題網(wǎng)址:http://weahome.cn/article/gsisop.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部