麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 數(shù)據(jù)庫 > MySQL > 正文

mysql全文模糊搜索MATCH AGAINST方法示例

2024-07-25 19:09:15
字體:
來源:轉載
供稿:網友

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

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

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

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

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ù)據(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) 里面的值必須是前面建立全文索引的兩個字段不能少。

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

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

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

全文檢索語法

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的記錄。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到MYSQL教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 精品在线一区二区三区 | 天天舔天天插 | 一级在线观看视频 | caoporn国产一区二区 | 成人福利软件 | 亚洲一区二区三区91 | 久久精品99久久久久久2456 | 久久久精品视频免费看 | omofun 动漫在线观看 | 成人国产综合 | 91精品久久久久久久久 | 一级成人欧美一区在线观看 | 久久福利小视频 | 国产精品99精品 | 精品亚洲一区二区三区 | 蜜桃精品视频 | 粉色视频污 | 一级电影在线观看 | 亚洲视频精选 | 黄片毛片一级 | 性高跟鞋xxxxhd4kvideos | 精品亚洲在线 | 久久久精品99 | 一级毛片在线观看免费 | 久久蜜桃香蕉精品一区二区三区 | 中文字幕亚洲一区二区三区 | 模特三级在线观看 | 久久久久9999 | 日产精品久久久一区二区福利 | 免费网站看v片在线a | 精品国产一区二区亚洲人成毛片 | 亚洲第一激情网 | 亚洲成人高清在线观看 | 色妞视频男女视频 | 色诱亚洲精品久久久久久 | 91精品视频网址 | 99爱视频在线 | 久久av喷吹av高潮av懂色 | 欧洲成人一区 | 青青青在线免费 | 毛片视频网址 |