溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

mysql全文檢索怎么做

發(fā)布時(shí)間:2020-09-24 09:07:12 來(lái)源:億速云 閱讀:172 作者:Leah 欄目:編程語(yǔ)言

mysql全文檢索怎么做?相信很多沒(méi)有經(jīng)驗(yàn)的人對(duì)此束手無(wú)策,為此本文總結(jié)了問(wèn)題出現(xiàn)的原因和解決方法,通過(guò)這篇文章希望你能解決這個(gè)問(wèn)題。

mysql做全文檢索的方法:

     1、自然語(yǔ)言檢索:

IN NATURAL LANGUAGE MODE

     2、布爾檢索:

 IN BOOLEAN MODE

          剔除一半匹配行以上都有的詞,譬如說(shuō),每個(gè)行都有this這個(gè)字的話(huà),那用this去查時(shí),會(huì)找不到任何結(jié)果,這在記錄條數(shù)特別多時(shí)很有用,

          原因是數(shù)據(jù)庫(kù)認(rèn)為把所有行都找出來(lái)是沒(méi)有意義的,這時(shí),this幾乎被當(dāng)作是stopword(中斷詞);但是若只有兩行記錄時(shí),是啥鬼也查不出來(lái)的,

          因?yàn)槊總€(gè)字都出現(xiàn)50%(或以上),要避免這種狀況,請(qǐng)用IN BOOLEAN MODE。

       ● IN BOOLEAN MODE的特色: 

          ·不剔除50%以上符合的row。 

          ·不自動(dòng)以相關(guān)性反向排序。 

          ·可以對(duì)沒(méi)有FULLTEXT index的字段進(jìn)行搜尋,但會(huì)非常慢。 

          ·限制最長(zhǎng)與最短的字符串。 

          ·套用Stopwords。

       ● 搜索語(yǔ)法規(guī)則:

         +   一定要有(不含有該關(guān)鍵詞的數(shù)據(jù)條均被忽略)。 

         -   不可以有(排除指定關(guān)鍵詞,含有該關(guān)鍵詞的均被忽略)。 

         >   提高該條匹配數(shù)據(jù)的權(quán)重值。 

         <   降低該條匹配數(shù)據(jù)的權(quán)重值。

         ~   將其相關(guān)性由正轉(zhuǎn)負(fù),表示擁有該字會(huì)降低相關(guān)性(但不像 - 將之排除),只是排在較后面權(quán)重值降低。 

         *   萬(wàn)用字,不像其他語(yǔ)法放在前面,這個(gè)要接在字符串后面。 

         " " 用雙引號(hào)將一段句子包起來(lái)表示要完全相符,不可拆字。

  SELECT * FROM articles WHERE MATCH (title,content) AGAINST ('+apple -banana' IN BOOLEAN MODE);

         + 表示AND,即必須包含。- 表示NOT,即必須不包含。即:返回記錄必需包含 apple,且不能包含 banner。

 SELECT * FROM articles WHERE MATCH (title,content) AGAINST ('apple banana' IN BOOLEAN MODE);

         apple和banana之間是空格,空格表示OR。即:返回記錄至少包含apple、banana中的一個(gè)。

SELECT * FROM articles WHERE MATCH (title,content) AGAINST ('+apple banana' IN BOOLEAN MODE);

         返回記錄必須包含apple,同時(shí)banana可包含也可不包含,若包含的話(huà)會(huì)獲得更高的權(quán)重。

SELECT * FROM articles WHERE MATCH (title,content) AGAINST ('+apple ~banana' IN BOOLEAN MODE);

         ~ 是我們熟悉的異或運(yùn)算符。返回記錄必須包含apple,若也包含了banana會(huì)降低權(quán)重。

         但是它沒(méi)有 +apple -banana 嚴(yán)格,因?yàn)楹笳呷绻琤anana壓根就不返回。

 SELECT * FROM articles WHERE MATCH (title,content) AGAINST ('+apple +(>banana <orange)' IN BOOLEAN MODE);

         返回必須同時(shí)包含“apple banana”或者必須同時(shí)包含“apple orange”的記錄。

         若同時(shí)包含“apple banana”和“apple orange”的記錄,則“apple banana”的權(quán)重高于“apple orange”的權(quán)重。

看完上述內(nèi)容,你們掌握mysql全文檢索怎么做的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI