国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

MySQL全文檢索中Like索引的實現

運維 數據庫運維 MySQL
在實際業務中,很難避免MySQL全文檢索并Like索引的這種需求。比如模糊搜索用戶帳號,昵稱之類。本文向您介紹如何在MySQL全文檢索中實現Like索引。

在數據庫使用中,DBA都會告訴大家SQL的LIKE條件為%XXX%號時,由于不能使用索引,當數據量變大時(比如超過百萬條),全表掃描會導致性能很差。

但是在實際業務中,很難避免MySQL全文檢索并Like索引的這種需求。比如模糊搜索用戶帳號,昵稱之類。既然這個需求必須做,但又不可以直接用LIKE。這里我和大家分享一下我們關于這種需求的一種解決方案。當然別人也可能采用過類似的辦法,我不是很清楚。所以也用一下“原創”吧。

MySQL數據庫很早就支持全文索引,但是全文索引和LIKE語句是不同的。具體點說,全文索引的單位是詞,耳LIKE匹配的是字符。當然實際的區別更大,比如“老鼠愛大米”這段文本用全文搜索的話,條件“老鼠愛大米”,“老鼠和大米”,“大米老鼠”,“大米與老鼠”會搜索到內容,但是“愛”,“鼠愛”,“愛大”不會搜索到內容。反之,使用LIKE搜索時,“老鼠和大米”,“大米老鼠”,“大米與老鼠”不會找到內容,而“愛”,“鼠愛”,“愛大”會找到內容。我們這里不討論兩種方式的優劣,根據實際情況每種功能都會有各自的實際需求。比如對于大段文本,全文檢索是最好的方法,但是對于姓名,帳號,昵稱等很短的通常無意義文本,LIKE會更合適一些。

雖然全文檢索和LIKE搜索不同,但是在特殊情況下,可以用全文搜索功能來實現LIKE搜索。具體就是每個字符作為一個詞,而且使用雙引號來限制詞精確匹配(簡單點說就是老鼠大米和大米老鼠不同),這樣可以實現LIKE搜索的功能。

下面還是說一下具體的做法吧。

首先,數據庫指定 --ft_min_word_len=2 --ft_stopword_file=""。第一個參數是告訴數據庫,小于2個字符的詞忽略。第二個是告訴數據庫不忽略任何特殊詞。這些設置是給實現功能創造條件。

然后建搜索表

CREATE TABLE  tbl_search (
  id int(10) unsigned NOT NULL auto_increment,
  name varchar(500),
  PRIMARY KEY  (id),
  FULLTEXT KEY idx_name (name)
) ENGINE=InnoDB AUTO_INCREMENT=1;

 

static String encode(String input) {
if (input == null) return null;
StringBuilder output = new StringBuilder();
for (int i = 0, c = input.length(); i < c; ++i) {
char ch = input.charAt(i);

if (ch >= '0' && ch <= '9' || ch >= 'A' && ch <= 'Z' 
|| ch >= '0' && ch <= '9' || ch >= 'A' && ch <= 'Z' 
|| ch == '_' || ch == '-') {
output.append(Integer.toHexString(ch)).append(' ');

} else if (ch >= 'a' && ch <= 'z' || ch >= 'a' && ch <= 'z') {
output.append(Integer.toHexString((int)ch - 32)).append(' ');

} else {
Character.UnicodeBlock block = Character.UnicodeBlock.of(ch);
if (block == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS
|| block == Character.UnicodeBlock.KATAKANA
|| block == Character.UnicodeBlock.HIRAGANA) {
output.append(Integer.toHexString(ch)).append(' ');
} else {
// do nothing
}
}

}

// trim blank
int last = output.length() - 1;
if (last > 0 && output.charAt(last) == ' ') {
output.deleteCharAt(last);
}

return output.toString();
}

使用上面的代碼對要搜索的內容編碼,比如內容是“藍皮鼠2008”,編碼后的結果是“84dd 76ae 9f20 32 30 30 38”。將編碼后的內容存入name字段。
 
使用如下SQL語句進行搜索

select * from tbl_search where match(name) against('"76ae 9f20 32"' in boolean mode) 

這樣就基本實現了MySQL全文檢索中的Like索引。

 

【編輯推薦】

  1. MySQL蠶食Oracle市場 六成IT設施使用開源軟件
  2. 使用調度和鎖定進行MySQL查詢優化
  3. MySQL基本調度策略淺析
  4. MySQL左連接、右連接和內連接詳解
責任編輯:佚名 來源: JavaEye
相關推薦

2010-11-10 14:18:15

SQL SERVER全

2015-07-13 11:39:25

SphinxSQL

2018-08-22 14:25:42

搜索LuceneQuery

2011-08-30 12:34:18

Oracle C#Oracle Text

2009-03-19 10:24:27

全文檢索文本定位Oracle

2024-01-25 10:37:33

MySQL數據庫ES

2010-06-11 17:00:34

2010-05-28 11:14:39

MySQL全文索引限制

2010-10-20 10:55:54

SQL Server全

2009-07-06 18:18:41

SQL Server全

2010-07-21 09:58:21

SQL Server全

2022-09-07 08:16:09

MySQL索引

2012-07-31 10:37:31

Lucene.net

2020-11-20 06:13:04

Like %

2010-07-16 15:42:32

SQL Server

2010-05-04 12:18:43

Oracle Text

2010-07-09 10:36:22

SQL Server

2010-05-27 14:27:30

MySQL全文索引

2010-06-17 10:56:57

SQL Server數

2011-08-03 10:40:17

SQL Server數全文檢索
點贊
收藏

51CTO技術棧公眾號

欧美精品videos另类日本| 国产日韩欧美中文| 日本a级在线| 最新国产成人在线观看| 免费看污污视频| 日韩成人免费在线| 久久综合一区二区三区| 欧美精品偷拍| 97久久夜色精品国产九色| 色97色成人| 欧美中在线观看| 日韩影视在线观看| 97精品国产97久久久久久免费| 国产精一区二区| 久久久精品日本| 精品国产亚洲一区二区三区| 亚洲人av在线影院| 精品3atv在线视频| 亚洲视频在线免费观看| av日韩亚洲| 最新的欧美黄色| 欧洲亚洲精品久久久久| 日韩有码在线电影| 精品亚洲二区| 久久久影视精品| 色综合久久中文| 国产精品va在线| 91精品福利| 久久精品二区| 美国一区二区三区在线播放| 第九区2中文字幕| 97久久人人超碰| 天堂中文字幕一二区| 一区二区成人在线| 青青国产在线| 日韩欧美电影一区| 午夜av不卡| 欧美老女人性视频| 婷婷综合电影| 国产一区在线播放| 久久福利精品| 欧美日韩dvd| 国产欧美一区二区精品秋霞影院| 91国内视频| 欧美日韩午夜在线视频| 亚洲国产成人二区| 久久久噜噜噜久久久| 欧美oldwomenvideos| 久久精品日产第一区二区三区精品版| 精品影院一区二区久久久| 欧美三级理论片| 亚洲丰满少妇videoshd| 欧美猛烈性xbxbxbxb| 日韩av中文字幕在线播放| 国产极品嫩模在线观看91精品| 97色在线视频观看| 国产精品mv在线观看| 成年丰满熟妇午夜免费视频| 中文字幕一区二区在线观看| 青青草娱乐在线| 日韩激情视频在线| 一区二区小说| 日韩精品最新在线观看| 久久久久久综合| 风间由美一区| 久久在线免费视频| 亚洲国产精品日韩专区av有中文| 亚洲精品乱码视频| 中文字幕精品在线不卡| 亚洲xxxxxx| 欧美肥婆姓交大片| 国产日韩亚洲| 亚洲综合色在线观看| 欧美乱妇23p| 中文字幕视频精品一区二区三区| 1卡2卡3卡精品视频| 成人午夜免费av| 国产三级视频在线看| 色偷偷偷亚洲综合网另类| 欧美色图国产精品| 国产二区视频在线| 五月婷婷久久综合| 视频欧美精品| 久久久久久国产精品一区 | av动漫免费看| 欧美日韩在线免费视频| 玖玖玖电影综合影院| 就去色蜜桃综合| 亚洲色图清纯唯美| 范冰冰一级做a爰片久久毛片| 国产精品三级美女白浆呻吟| 成人免费视频免费观看| 搞黄视频在线观看| 精品中文字幕在线| 日本va欧美va精品发布| 老司机很黄的视频免费| 一本久久综合亚洲鲁鲁| 亚洲小说区图片区| 国产日本韩国在线播放| 在线观看中文字幕亚洲| 亚洲一区日本| 最近中文视频在线| 久久精品国亚洲| 蜜臀va亚洲va欧美va天堂| 无圣光视频在线观看| 欧美另类99xxxxx| 国产一区视频导航| 巨大荫蒂视频欧美大片| 国产色视频一区| 国产精品初高中害羞小美女文| 91在线成人| 欧美性视频在线播放| 7777精品伊人久久久大香线蕉超级流畅 | 久久久视频免费观看| 国产做a爰片久久毛片| 久久伊伊香蕉| 国产精品丝袜久久久久久不卡| 国产午夜精品一区二区| 九九九精品视频| 精品国产一区二区三区在线| 欧美日韩综合一区| 在线中文一区| 亚洲女优视频| 国产91精品久久久久久久| 久久欧美一区二区| 国产成人77亚洲精品www| 久久综合亚洲精品| 亚洲第一区中文99精品| 日韩成人免费电影| 9lporm自拍视频区在线| 日韩精品福利视频| 欧美mv日韩mv国产网站| 影音先锋日韩资源| 风间由美一区| 国产欧美一区二区三区另类精品| 色欧美日韩亚洲| 黄色成人av网站| 蜜桃视频在线观看www社区| 国产日韩在线一区二区三区| 欧美日韩在线免费视频| 亚洲每日在线| 怡红院在线播放| 一区二区三区欧美在线| 亚洲欧美国产日韩中文字幕| 高清成人免费视频| 四虎精品一区二区免费| 欧美日韩在线不卡视频| 午夜精品久久久久久久99黑人 | 日韩欧美亚洲区| 亚洲精品国产福利| 国产成人精品免费看| 亚洲高清国产拍精品26u| 五月婷婷狠狠操| 国产成人精品亚洲精品| 色综合婷婷久久| 国产欧美午夜| 激情国产在线| 黄网站色视频免费观看| 久久色免费在线视频| 亚洲女与黑人做爰| 欧美视频成人| 黄色小说在线播放| 免费 成 人 黄 色| 韩国国内大量揄拍精品视频| 亚洲午夜一二三区视频| 夜夜精品视频| 欧美日韩成人影院| a√免费观看在线网址www| 国产欧美韩日| 亚洲深夜福利网站| 国产精品欧美久久久久无广告| 欧美色图在线播放| 麻豆视频免费在线观看| 国产69精品久久久久久久| 日韩免费观看视频| 日韩一二三区不卡| 日本一区二区三区四区在线视频 | 草裙成人精品一区二区三区 | 日韩一级片一区二区| 久久久欧美一区二区| 欧美视频一区二区三区…| 日韩一区精品字幕| 欧美1区2区3| 番号集在线观看| 缅甸午夜性猛交xxxx| 成人精品视频99在线观看免费 | 成人av在线一区二区| 少妇精品久久久| 日韩伦理av| 成人黄色电影网址| 欧美主播一区二区三区美女 久久精品人| 日韩在线观看免费全| 日韩欧美中文第一页| 国产99一区视频免费| 91精品一区二区三区综合| 视频一区在线免费看| 国产在线日本| 一级片视频免费观看| 神马影院我不卡| 国产精品成人一区二区三区吃奶|