mysql 不用斯芬克斯 全域性模糊匹配 查詢

2021-08-17 09:08:52 字數 1360 閱讀 7029

問題是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  

(engine myisam; 沒用備註)

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

給這個表新增點測試資料

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

3. 全文檢索測試

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還會計算乙個詞的權值,以決定是否出現在結果集中,具體如下:

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

Sphinx(斯芬克斯的安裝及使用)

1.說明 sphinx是乙個基於sql的全文檢索引擎,可以結合 mysql,postgresql做全文搜尋,它可以提供比資料庫本身更專業的搜尋功能,使得應用程式更容易實現專業化的全文檢索。sphinx特別為一些指令碼語言設計搜尋api介面,如php,python,perl,ruby等,同時為mysq...

mysql 斯文克斯 mysql 全文索引

使用索引是資料庫效能優化的必備技能之一。在mysql資料庫中,有四種索引 聚集索引 主鍵索引 普通索引 唯一索引以及我們這裡將要介紹的全文索引 fulltext index 全文索引 也稱全文檢索 是目前搜尋引擎使用的一種關鍵技術。它能夠利用 分詞技術 等多種演算法智慧型分析出文字文字中關鍵字詞的頻...

過濾 監聽 阿賈克斯

2018年1月8日14 22 51 第一段課內容 過濾第一步 新建乙個包 com.bdqn.filter 新建乙個類 encodingfilter 實現介面implements filter dofiler的方法記得改引數名字 override public void dofilter servle...