MySQL全文索引的使用
自己原文公眾號: https://mp.weixin.qq.com/s/BhUH6rcQHNGpW7_WQEnScA
有開發求助,要查公司,但是公司帶括號。括號可能是全形的也可能是半形的。這種問題不是第一次見了,見得太多了。大家似乎習慣是輸入時候是任意的,只是查詢時候來做區分。其實這是不對的。就像垃圾分類是在小區垃圾桶做?還是在垃圾處理廠最後一道手續的時候做?顯然前期分類比較合適。
我們以前做公安系統,錄入路口、路段、座標等等都是有嚴格規定。所以在頁面上你可以隨意輸入,但是輸入框內會自動給你全部轉換成統一格式,以便統一儲存。現在發現我的第一個公司的開發團隊的水平是我經歷過最高的。從設計到實現,不僅規範而且高效。原因是都是70、80的為開發主力或者開發負責人。
mysql> create table a (id int auto_increment primary key,user varchar(20), fulltext(user) with parser ngram);
Query OK, 0 rows affected (0.20 sec)
模擬資料以後是這樣的:(資料是隨便編的不一定有這些公司,主要是為了全形和半形的括號)
如果我們命令是
select * from a where user like '%網易%';
查出資料過多。
如果命令是select * from a where user like '%廣州%';
查出資料有不符合的。
既不能多也不能少,而且要處理掉括號。
SQL應該這樣寫:
select * from a where match(user) against ('+網易 +廣州' IN BOOLEAN MODE);
嗯,符合要求。
Oracle下的實現請看下一篇。PostgreSQL的也有,只是不夠熟練,需要再嘗試一下,陸續推出。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/637517/viewspace-2847121/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- mysql中文全文索引的記錄MySql索引
- MySQL索引系列:全文索引MySql索引
- 在laravel中使用mysql fulltext全文索引代替like查詢提高效能LaravelMySql索引
- mysql百萬級全文索引及match快速查詢MySql索引
- Oracle的全文索引Oracle索引
- 為什麼ElasticSearch比MySQL更適合全文索引ElasticsearchMySql索引
- MySQL 為什麼全文索引查中文找不結果MySql索引
- Oracle:全文索引Oracle索引
- MySQL全文索引原始碼剖析之Insert語句執行過程MySql索引原始碼
- mysql的使用MySql
- 【SqlServer】管理全文索引(FULL TEXT INDEX)SQLServer索引Index
- oracle全文索引之commit與DML操作Oracle索引MIT
- MySQL JOIN的使用MySql
- oracle全文索引之幾個關鍵表Oracle索引
- 達夢資料庫全文索引簡介資料庫索引
- oracle全文索引之如何實現查詢Oracle索引
- mysql count()的使用解析MySql
- MySQL變數的使用MySql變數
- oracle全文索引之配置全文檢索環境Oracle索引
- 【必知必會的MySQL知識】②使用MySQLMySql
- MySQL 使用MySql
- Mysql 使用MySql
- mysql中case when的使用MySql
- ES-MySQL-PHP的使用MySqlPHP
- MySQL的索引原理及使用MySql索引
- SQL Server 全文搜尋功能、全文索引方式介紹SQLServer索引
- 深度解析 Lucene 輕量級全文索引實現原理索引
- mysql索引的使用和優化MySql索引優化
- MYSQL基礎語法的使用MySql
- 使用perl比較mysql的版本MySql
- 使用一個Oracle MySQL的理念OracleMySql
- 關於MySQL使用的時長MySql
- Mysql 儲存過程的使用MySql儲存過程
- 解析MySQL中INSERT INTO SELECT的使用MySql
- MySQL中explain語句的使用MySqlAI
- Mysql索引使用MySql索引
- MySQL基本使用MySql
- oracle全文索引之同步和優化索引做了什麼Oracle索引優化