<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        mysql模糊搜索的方法介紹

        來源:懂視網 責編:小采 時間:2020-11-09 21:11:17
        文檔

        mysql模糊搜索的方法介紹

        mysql模糊搜索的方法介紹:網上查了一下,有兩種方法,第一種最土的方法:使用like語句第二種聽濤哥說用全文索引,就在網上搜一下: 如何在MySQL中獲得更好的全文搜索結果 很多互聯網應用程序都提供了全文搜索功能,用戶可以使用一個詞或者詞語片斷作為查詢項目來定位匹配的記錄。在后
        推薦度:
        導讀mysql模糊搜索的方法介紹:網上查了一下,有兩種方法,第一種最土的方法:使用like語句第二種聽濤哥說用全文索引,就在網上搜一下: 如何在MySQL中獲得更好的全文搜索結果 很多互聯網應用程序都提供了全文搜索功能,用戶可以使用一個詞或者詞語片斷作為查詢項目來定位匹配的記錄。在后

        網上查了一下,有兩種方法,第一種最土的方法:使用like語句第二種聽濤哥說用全文索引,就在網上搜一下: 如何在MySQL中獲得更好的全文搜索結果

        很多互聯網應用程序都提供了全文搜索功能,用戶可以使用一個詞或者詞語片斷作為查詢項目來定位匹配的記錄。在后臺,這些程序使用在一個SELECT 查詢中的LIKE語句來執行這種查詢,盡管這種方法可行,但對于全文查找而言,這是一種效率極端低下的方法,尤其在處理大量數據的時候。

        mysql針對這一問題提供了一種基于內建的全文查找方式的解決方案。在此,開發者只需要簡單地標記出需要全文查找的字段,然后使用特殊的MySQL方法在那些字段運行搜索,這不僅僅提高了性能和效率(因為MySQL對這些字段做了索引來優化搜索),而且實現了更高質量的搜索,因為MySQL使用自然  語言來智能地對結果評級,以去掉不相關的項目。
        這篇文章將向您講述在MySQL中如何進行全文搜索。

        在進行數據庫查詢時,有完整查詢和模糊查詢之分。
        SELECT 字段 FROM 表 WHERE 某字段 Like 條件
        其中關于條件,SQL提供了四種匹配模式:
        1,%:表示任意0個或多個字符。可匹配任意類型和長度的字符,有些情況下若是中文,請使用兩個百分號(%%)表示。
        比如 SELECT * FROM [user] WHERE u_name LIKE '%三%'
        將會把u_name為“張三”,“張貓三”、“三腳貓”,“唐三藏”等等有“三”的記錄全找出來。
        另外,如果需要找出u_name中既有“三”又有“貓”的記錄,請使用and條件
        SELECT * FROM [user] WHERE u_name LIKE '%三%' AND u_name LIKE '%貓%'
        若使用 SELECT * FROM [user] WHERE u_name LIKE '%三%貓%'
        雖然能搜索出“三腳貓”,但不能搜索出符合條件的“張貓三”。
        2,_: 表示任意單個字符。匹配單個任意字符,它常用來限制表達式的字符長度語句:
        比如 SELECT * FROM [user] WHERE u_name LIKE '_三_'
        只找出“唐三藏”這樣u_name為三個字且中間一個字是“三”的;
        再比如 SELECT * FROM [user] WHERE u_name LIKE '三__';
        只找出“三腳貓”這樣name為三個字且第一個字是“三”的;
        3,[ ]:表示括號內所列字符中的一個(類似正則表達式)。指定一個字符、字符串或范圍,要求所匹配對象為它們中的任一個。
        比如 SELECT * FROM [user] WHERE u_name LIKE '[張李王]三'
        將找出“張三”、“李三”、“王三”(而不是“張李王三”);
        如 [ ] 內有一系列字符(01234、abcde之類的)則可略寫為“0-4”、“a-e”
        SELECT * FROM [user] WHERE u_name LIKE '老[1-9]'
        將找出“老1”、“老2”、……、“老9”;
        4,[^ ] :表示不在括號所列之內的單個字符。其取值和 [] 相同,但它要求所匹配對象為指定字符以外的任一個字符。
        比如 SELECT * FROM [user] WHERE u_name LIKE '[^張李王]三'
        將找出不姓“張”、“李”、“王”的“趙三”、“孫三”等;
        SELECT * FROM [user] WHERE u_name LIKE '老[^1-4]';
        將排除“老1”到“老4”,尋找“老5”、“老6”、……
        5,查詢內容包含通配符時
        由于通配符的緣故,導致我們查詢特殊字符“%”、“_”、“[”的語句無法正常實現,而把特殊字符用“[ ]”括起便可正常查詢。據此我們寫出以下函數:
        function sqlencode(str)
        str=replace(str,"[","[[]") '此句一定要在最前
        str=replace(str,"_","[_]")
        str=replace(str,"%","[%]")
        sqlencode=str
        end function
        在查詢前將待查字符串先經該函數處理即可。

        1、設置基本表格
        從創建例子表格開始,使用以下的SQL命令:
        mysql> CREATE TABLE reviews (id INT(5) PRIMARY KEY NOT NULL AUTO_INCREMENT, data TEXT);
        以上命令創建了一個簡單的音樂專集資料庫(主要是整段的文字),然后向這個表格中添加一些記錄:
        mysql> INSERT INTO `reviews` (`id`, `data`) VALUES
        (1, 'Gingerboy has a new single out called Throwing Rocks. It\'s great!');
        mysql> INSERT INTO `reviews` (`id`, `data`) VALUES
        (2, 'Hello all, I really like the new Madonna single.
        One of the hottest tracks currently playing...I\'ve been listening to it all day');
        mysql> INSERT INTO `reviews` (`id`, `data`)
        VALUES (3, 'Have you heard the new band Hotter Than Hell?
        They have five members and they burn their instruments when they play in concerts.
        These guys totally rock! Like, awesome, dude!');
        驗證數據的正確錄入:
        mysql> SELECT * FROM reviews;
        +----+--------------------------------------------+
        id data
        +----+--------------------------------------------+
        1 Gingerboy has a new single out called ...

        2 Hello all, I really like the new Madon ...
        3 Have you heard the new band Hotter Than...
        +----+--------------------------------------------+
        3 rows in set (0.00 sec)
        2、定義全文搜索字段
        接下來,定義您要作為全文搜索索引的字段
        mysql> ALTER TABLE reviews ADD FULLTEXT INDEX (data);
        Query OK, 3 rows affected (0.21 sec)
        Records: 3 Duplicates: 0 Warnings: 0
        使用SHOW INDEXES命令來檢查索引已經被添加了:
        mysql> SHOW INDEXES FROM reviews;
        +---------+---------------+--------+------+------------+---------+
        Table Column_name Packed Null Index_type Comment
        ----------+---------------+--------+------+------------+---------+
        reviews id NULL BTREE
        reviews data NULL YES FULLTEXT
        +---------+---------------+--------+------+------------+---------+
        3、運行全文搜索
        當您擁有了數據和索引,就可以使用MySQL的全文搜索了,最簡單的全文搜索方式是帶有MATCH...AGAINST語句的SELECT查詢,以下是一個簡單的例子,可以來查找含有單詞“single”的記錄:
        mysql> SELECT id FROM reviews WHERE MATCH (data) AGAINST ('single');+----+
        id
        +----+
        1
        2
        +----+
        2 rows in set (0.00 sec)
        在此,MATCH()將作為參數傳遞給它的字段中的文字與傳遞給AGAINST()的參數進行比較,如果有匹配的,那就按照正常的方式返回。注意您可以傳遞不止一個字段用MATCH()來查看­-只需用逗號來分割字段列表。
        當MySQL收到了一個全文搜索的請求,它就在內部對每個記錄進行評分,不匹配的記錄得分為零,而“更相關”的記錄會得到比“不太相關”的記錄相對更高的分數。相關性是由MySQL的一系列區分標準來決定的,查看MySQL的用戶手冊可以得到更多的信息。
        想看到每個記錄的評分如何,只需要返回MATCH()方法作為結果集的一部分,如下所示:
        mysql> SELECT id, MATCH (data) AGAINST ('rock') FROM reviews;

        +----+-------------------------------+
        id MATCH (data) AGAINST ('rock')
        +----+-------------------------------+
        1 0
        2 0
        3 1.3862514533815
        +----+-------------------------------+
        3 rows in set (0.00 sec)
        4、使用邏輯搜索修飾符(Boolean search modifiers)
        您還可以使用邏輯搜索修飾符來進行更精確的搜索,這通過在AGAINST語句中添加特殊的IN BOOLEAN MODE修飾符來實現,在以下的例子中,將查找含有單詞“single”但是沒有“Madonna”的記錄:
        mysql> SELECT id FROM reviews WHERE MATCH (data) AGAINST ('+single -madonna' IN BOOLEAN MODE);
        +----+
        id
        +----+
        1
        +----+
        1 row in set (0.00 sec)
        這一搜索特性通常用于搜索單詞片斷(而不是完整的詞語),這可以通過在IN BOOLEAN MODE語句中的*(星號)操作符來實現,以下的例子展示了如何查找單詞中含有“hot”的記錄:
        mysql> SELECT id FROM reviews WHERE MATCH (data) AGAINST ('hot*' IN BOOLEAN MODE);+----+
        id
        +----+
        3
        2
        +----+
        2 rows in set (0.00 sec)
        您還可以使用這種方法來查找至少一個傳遞到AGAINST的參數中,以下的例子查找了至少包含單詞“hell”和“rocks”中的一個的記錄:
        mysql> SELECT id FROM reviews WHERE MATCH (data) AGAINST ('hell rocks' IN BOOLEAN MODE);
        +----+
        id
        +----+
        1
        3
        +----+
        3 rows in set (0.00 sec)
        以上的這些例子演示了相對于傳統的SELECT...LIKE語句,進行全文搜索的更有效的方法,當您下一次需要編寫MySQL數據庫搜索界面的時候,您可以嘗試這一方法。 最終發現使用不了,原因是只有MyISAM引擎才支持全文索引,暈。好吧,還是用like進行搜索。。

        您可能感興趣的文章:

      1. Mysql全文搜索match against的用法
      2. Mysql Binlog快速遍歷搜索記錄及binlog數據查看的方法
      3. mysql全文搜索 sql命令的寫法
      4. mysql 搜索之簡單應用
      5. php利用scws實現mysql全文搜索功能的方法
      6. php mysql like 實現多關鍵詞搜索的方法
      7. 詳細介紹基于MySQL的搜索引擎MySQL-Fullltext
      8. mysql 全文搜索 技巧
      9. MySQL多層級結構-樹搜索介紹
      10. 在MySQL中使用Sphinx實現多線程搜索的方法
      11. mysql中使用sphinx搜索子域名需注意的問題
      12. MySQL高效模糊搜索之內置函數locate instr position find_in_set使用詳解
      13. 聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        mysql模糊搜索的方法介紹

        mysql模糊搜索的方法介紹:網上查了一下,有兩種方法,第一種最土的方法:使用like語句第二種聽濤哥說用全文索引,就在網上搜一下: 如何在MySQL中獲得更好的全文搜索結果 很多互聯網應用程序都提供了全文搜索功能,用戶可以使用一個詞或者詞語片斷作為查詢項目來定位匹配的記錄。在后
        推薦度:
        標簽: 查詢 搜索 查找
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 亚洲无码黄色网址| 国产极品美女高潮抽搐免费网站| 亚洲毛片网址在线观看中文字幕| 国产精品久久亚洲一区二区| 7723日本高清完整版免费| 亚洲成电影在线观看青青| 91免费在线播放| 亚洲人成小说网站色| 四虎永久在线精品免费网址 | 亚洲国产精品线观看不卡| 亚洲免费一级视频| 日本亚洲免费无线码 | 天天摸夜夜摸成人免费视频| 亚洲精品无码久久| yy6080久久亚洲精品| 搡女人免费免费视频观看| 无码乱人伦一区二区亚洲一| 色猫咪免费人成网站在线观看| 亚洲精品无码久久毛片波多野吉衣| 国产无人区码卡二卡三卡免费 | 一级一级毛片免费播放| 亚洲国产精品一区第二页| 91免费播放人人爽人人快乐| 亚洲乱妇熟女爽到高潮的片| 一区二区三区亚洲视频| 久操视频在线免费观看| 亚洲伊人久久大香线蕉啊| 免费国产高清视频| 精品在线免费观看| 亚洲avav天堂av在线网爱情| 免费成人午夜视频| 99re在线这里只有精品免费| 亚洲乱码日产精品一二三| 青青草原亚洲视频| 日韩免费一区二区三区在线| 一区二区三区精品高清视频免费在线播放| 久久综合图区亚洲综合图区| 成人免费午夜视频| 永久免费AV无码网站国产 | 国产亚洲综合网曝门系列| 成人特黄a级毛片免费视频|