1. 程式人生 > >mysql全文檢索

mysql全文檢索

 說起資料庫,MYSQL最適合用於小型運用的開發。最近想弄一個簡單的音樂網站玩一下,資料庫是以前在網上爬去的。資料不是特別多,但是也不少,查了一下一共有六十多萬條歌曲的記錄。既然是做音樂網站的話,首先要有一個搜尋的功能,至少要能夠搜尋你有的歌曲吧。由於以前沒有怎麼認真弄過sql查詢的問題,所以還是用最簡單的方法去查詢,但是這次遇到了單表上百萬記錄。我用select * from song where songname like '%key%';去查詢,結果效率低到難以忍受。竟然用了三十多秒才出結果!這對於任何運用都是沒辦法忍受的。後來就想著去做sql查詢的優化,google了很久,試過了建立索引,改變表的結構等等都無濟於事啊。後來看到一篇專業文章寫道,其實對應大資料量查詢的時候,很多資料庫是支援全文檢索的。知道以後我立馬開始弄全文檢索:

首先我的表預設是:innoDB,這種表的型別不支援全文檢索,所以要先改變其型別為MyISAM。

 alter table song engine=MyISAM;

然後要在對應的要進行查詢的欄位上面建立全文檢索的索引:

alter table add fulltext index(songname);

如果要同時對多個欄位進行檢索可以這樣:

alter table add fulltext index(songname,singername);

這樣做好以後呢,就可以對錶進行全文檢索了,速度提升是飛一般的感覺啊!現在的結果是秒出啊。可以這樣去檢索欄位:

select * from song where match(singername) against('周杰倫') ;

或者多欄位:

select * from song where match(singername,songname) against('風雨');

 但是,其實這個時候中文是沒辦法得到結果的!應為MYSQL目前只支援英文字元的全文搜尋,這又叫我蛋疼了一下。後來看到一個論文說是按照把中文轉化為拼音,就可以用英文檢索對中文進行檢索了。看了一下拼音的思路以後我就有了一個注意,在表裡面為每一個需要檢索的欄位對應新增一個拼音欄位,檢索的時候直接對拼音檢索就可以了

  首先要解決的問題是在已有的表裡面新增拼音欄位,我用的是java,將中文轉化為拼音不是難事。所以我寫了一個小程式,修改了一下表的結構,為每一個需要查詢的欄位添加了一個對應的拼音欄位。

  這樣的話在查詢的時候先把中文關鍵字先用小程式轉化為拼音然後對拼音欄位進行全文檢索就能得到結果了。我的中文檢索是這樣子解決的。也許有其它辦法,這個方法解決了我的小問題。

相關推薦

MySQL全文檢索fulltext和中日韓文解析外掛ngram使用記錄

專案資料庫中遇到一個情況,有一個欄位儲存的是經銷廠商在工商局註冊時的(官方)全稱,但是使用者在查詢這個欄位時,很多時候都會使用到各種各樣的簡稱別稱。於是,對於該欄位,希望能夠實現類似於搜尋引擎的查詢。就像資料庫裡面存的是“中華人民共和國”,但希望是隻要使用者輸入“中國”、“中

mysql全文檢索

 說起資料庫,MYSQL最適合用於小型運用的開發。最近想弄一個簡單的音樂網站玩一下,資料庫是以前在網上爬去的。資料不是特別多,但是也不少,查了一下一共有六十多萬條歌曲的記錄。既然是做音樂網站的話,首先要有一個搜尋的功能,至少要能夠搜尋你有的歌曲吧。由於以前沒有怎麼認真弄過

MySQL全文檢索外掛

hightman實現了一個MySQL全文檢索的外掛。它只能使用在5.1.11-12,並且需要更改MySQL的原始碼,故對其做了一些修改,替換了一個MySQL後續版本中更改了的介面,去掉了一些不需要的功能。 hightman的外掛使用了自己的wordlist和stopword

MySQL中文全文檢索

arch xxxxx 異或 檢索 擁有 優秀 模糊匹配 運算 query 一、概述 MySQL全文檢索是利用查詢關鍵字和查詢列內容之間的相關度進行檢索,可以利用全文索引來提高匹配的速度。 二、語法 MATCH (col1,col2,...) AGAINS

【Sphinx】MySQL+Sphinx 全文檢索的使用和測試

sphinx mysql 增量更新索引文 導讀:最近在線上由於某些不可名狀的原因需要在數據庫中過濾一些詞語,所以線上比較多的語句都是 select c1,c2 fron tb1 where c1 like '%name%'類似與這個樣子的模糊查詢。開始想到了全文索引來進行分詞,但是又想到

MySQL 5.7 中文全文檢索使用教程

在MySQL 5.7.6之前,全文索引只支援英文全文索引,不支援中文全文索引,需要利用分詞器把中文段落預處理拆分成單詞,然後存入資料庫。 從MySQL 5.7.6開始,MySQL內建了ngram全文解析器,用來支援中文、日文、韓文分詞。 本文使用的MySQL 版本是5.7.22,InnoDB資料

Mysql利用match...against進行全文檢索

在電商專案中,最核心的功能之一就是搜尋功能,搜尋做的好,整個電商平臺就是個優秀的平臺。一般搜尋功能都使用搜索引擎如Lucene、solr、elasticsearch等,雖然這功能比較強大,但是對於一些小公司或者小的電商平臺專案有點大材小用了,對於小專案我們可以採用折中的方法

基於Sphinx+MySQL的千萬級資料全文檢索(搜尋引擎)架構設計

[文章作者:張宴 本文版本:v1.0 最後修改:2008.07.27 轉載請註明原文連結:http://blog.s135.com/post/360/]  前言:本文闡述的是一款經過生產環境檢驗的千萬級資料全文檢索(搜尋引擎)架構。本文只列出前幾章的內容節選,不提供全文內容。

MySQL 8中使用全文檢索示例

primary ans parser mat where lan uri reat article 首先建議張冊測試用的表test,並使用fulltext說明將title和body兩列的數據加入全文檢索的索引列中: drop table if exists test; cr

Mysql 如何實現全文檢索,關鍵詞跑分

--- ## 一、前言 今天一個同事問我,如何使用 Mysql 實現類似於 ElasticSearch 的全文檢索功能,並且對檢索關鍵詞跑分?我當時腦子裡立馬產生了疑問?為啥不直接用es呢?簡單好用還賊快。但是聽他說,資料量不多,客戶給的時間非常有限,根本沒時間去搭建es,所以還是看一下 Mysql 的全文

全文檢索學習歷程目錄結構Lucene、ElasticSearch

wql elong f2c xiang bench ros dml bst nsh Linux%20Shell%E7%B3%BB%E5%88%97%E6%95%99%E7%A8%8B%E4%B9%8B%E4%BA%8C%E7%AC%AC%E4%B8%80%E4%B8%AAS

oracle仿全文檢索切詞機制實現文本信息類似度查找

pos rom 排除 應用場景 popu ora mar 機制 一個 應用場景: 依據keyword查詢與此keyword相似的信息,當中一些keyword要排除掉比如:“有限公司”、“有限責任公司”、“股份有限公司”等

mysql全文索引之模糊查詢

http mysql5 var innodb 沒有 null into user 測試數據 舊版的MySQL的全文索引只能用在MyISAM表格的char、varchar和text的字段上。 不過新版的MySQL5.6.24上InnoDB引擎也加入了全文索引,所以具體信息大家

全文檢索技術---solr

可擴展 spa start common sha https 站內搜索 請求方法 效果 1 Solr介紹 1.1 什麽是solr Solr 是Apache下的一個頂級開源項目,采用Java開發,它是基於Lucene的全文搜索服務器。Solr可以獨立運行在

luence全文檢索(簡介)

through 提取關鍵字 dna 環境 director 中國 ade equals 關鍵字查詢 剛開始做全文檢索也是找了很多資料但是網上的都不是很齊全luence是個很不多的工具 Lucene4.0的官網文檔:http://lucene.apache.org/core/

全文檢索ES 服務啟動和關閉

eap sep ror cms nco sin head exp rac nohup ./elasticsearch & 可以後臺開啟elasticsearch服務 ps-ef列出所有進程 ps-ef | grep elastic...查找elastic。。的

[hdu1277]全文檢索(AC自動機)

數組 size using blog ans emp print 檢索 sca 解題關鍵:AC自動機模板題,註意字符匹配時若無法匹配,直接用%s即可。 1 #include<bits/stdc++.h> 2 using namespace std;

Elasticsearch全文檢索,高亮關鍵字

code spa nsh pes lds exp response sets highlight 問題 用如下這樣的term方式,可以高亮 .setQuery(QueryBuilders.termQuery("PARAM_NAME", "a")) { "query":

使用PostgreSQL進行全文檢索

搜索 -a 存在 upd key 插件 大量 交流 問題搜索 * { color: #3e3e3e } body { font-family: "Helvetica Neue", Helvetica, "Hiragino Sans GB", "Microsoft YaHei

Lucene全文檢索引擎

getname 通過 nal dem 檢索 數據庫 project cep 關閉 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSch