版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、MySQL全文索引與搜索,一、注意事項(xiàng) 二、創(chuàng)建索引 三、查詢 四、布爾全文搜索 :IN BOOLEAN MODE 修飾語(yǔ) 五、scws中文分詞 參考資料: ,內(nèi)容介紹,注意事項(xiàng),一、為什么要用全文索引呢? 一般的數(shù)據(jù)庫(kù)搜索都是用的SQL的 like 語(yǔ)句,like 語(yǔ)句有時(shí)是不能利用索引的,每次查詢都是從第一條遍歷至最后一條,查詢效率極其低下。 全文索引在 MySQL 中是一個(gè) FULLTEXT 類型的索引。FULLTEXT 索引用于 MyISAM 表,可以在 CREATE TABLE 時(shí)或之后使用 ALTER TABLE 或 CREATE INDEX 在 CHAR、VARCHAR 或 TE
2、XT 列上創(chuàng)建。 二、全文停止字(禁用字) 三、全文索引中默認(rèn)搜索的最短詞的長(zhǎng)度: 修改 my.ini (Linux 下是 f ) , 在 mysqld 后面加入一行 “ft_min_word_len=1”, 然后重啟Mysql。 查看: show variables like ft_m%;,創(chuàng)建索引,創(chuàng)建全文索引: mysql CREATE TABLE articles ( - id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,- title VARCHAR(200), - body TEXT, - FULLTEXT (title,bod
3、y) - ); ALTER TABLE table_name ADD FULLTEXT ( column ); CREATE FULLTEXT INDEX index_name ON table_name (column_name); 查看索引: show index from table_name ; 或:,查詢(一),全文搜索通過(guò) MATCH() 函數(shù)完成 SELECT * FROM articles WHERE MATCH (title,body) AGAINST (database); 注:可以傳遞不止一個(gè)字段用MATCH()來(lái)查看只需用逗號(hào)來(lái)分割字段列表。搜索可以忽略字母大小寫(xiě)。對(duì)于
4、表中的每個(gè)記錄行,MATCH() 返回一個(gè)相關(guān)性值。即,在搜索字符串與記錄行在 MATCH() 列表中指定的列的文本之間的相似性尺度。 當(dāng) MATCH() 被使用在一個(gè) WHERE 子句中時(shí) (參看上面的例子),返回的記錄行被自動(dòng)地以相關(guān)性從高到底的次序排序。相關(guān)性值是非負(fù)的浮點(diǎn)數(shù)字。零相關(guān)性意味著不相似。相關(guān)性的計(jì)算是基于:詞在記錄行中的數(shù)目、在行中唯一詞的數(shù)目、在集中詞的全部數(shù)目和包含一個(gè)特殊詞的文檔(記錄行)的數(shù)目。,查詢(二),前面說(shuō)的是函數(shù) MATCH() 使用上的一些基本說(shuō)明。記錄行以相似性遞減的順序返回。如果想看到每個(gè)記錄的相似性如何,只需要返回MATCH()方法作為結(jié)果集的一部
5、分,下面這個(gè)示例顯示如何檢索一個(gè)明確的相似性值。如果沒(méi)有 WHERE 子句也沒(méi)有 ORDER BY 子句,返回行是不排序的。 SELECT id,MATCH (title,body) AGAINST (Tutorial) FROM articles;,查詢(三),下面的示例更復(fù)雜一點(diǎn)。查詢返回相似性并依然以相似度遞減的次序返回記錄行。為了完成這個(gè)結(jié)果,你應(yīng)該指定 MATCH() 兩次。這個(gè)時(shí)候相似度為0的行,也就是不包含這個(gè)單詞的行就不顯示出來(lái)了。這不會(huì)引起附加的開(kāi)銷,因?yàn)?MySQL 優(yōu)化器會(huì)注意到兩次同樣的 MATCH() 調(diào)用,并只調(diào)用一次全文搜索代碼。 select id,match(
6、title,body) against(Tutorial) from articles where match(title,body) against (Tutorial); 一個(gè)出現(xiàn)在許多文件中的單詞具有較低的重要性(而且甚至很多單詞的重要性為零),原因是在這個(gè)特別詞庫(kù)中其語(yǔ)義價(jià)值較低。反之,假如這個(gè)單詞比較少見(jiàn),那么它會(huì)得到一個(gè)較高的重要性。然后單詞的重要性被組合,從而用來(lái)計(jì)算該行的相關(guān)性。 這項(xiàng)技術(shù)最適合同大型詞庫(kù)一起使用 (事實(shí)上, 此時(shí)它經(jīng)過(guò)仔細(xì)的調(diào)整 )。對(duì)于很小的表,單詞分布并不能充分反映它們的語(yǔ)義價(jià)值, 而這個(gè)模式有時(shí)可能會(huì)產(chǎn)生奇特的結(jié)果。例如, 雖然單詞 “MySQL” 出現(xiàn)
7、在文章表中的每一行,但對(duì)這個(gè)詞的搜索可能得不到任何結(jié)果:,雖然單詞 “MySQL” 出現(xiàn)在文章表中的每一行,但對(duì)這個(gè)詞的搜索可能得不到任何結(jié)果: SELECT * FROM articles WHERE MATCH (title,body) AGAINST (MySQL); 這個(gè)搜索的結(jié)果為空,原因是單詞 “MySQL” 出現(xiàn)在至少全文的50%的行中。 因此, 它被列入停止字。 如果遇到這種情況,在查詢的時(shí)候可以更改查詢的條件來(lái)進(jìn)行矯正如: SELECT * FROM articles WHERE MATCH (title,body) AGAINST (MySQL in BOOLEAN mod
8、e);,全文停止字、全文限定條件,全文限定條件 1、全文搜索只適用于 MyISAM 表。 2、全文搜索可以同大多數(shù)多字節(jié)字符集一起使用。Unicode屬于例外情況; 可使用utf8 字符集 , 而非ucs2字符集。 3、諸如漢語(yǔ)和日語(yǔ)這樣的表意語(yǔ)言沒(méi)有自定界符。因此, FULLTEXT分析程序不能確定在這些或其它的這類語(yǔ)言中詞的起始和結(jié)束的位置。 4、若支持在一個(gè)單獨(dú)表中使用多字符集,則所有 FULLTEXT索引中的列 必須使用同樣的字符集和庫(kù)。 5、MATCH()列列表必須同該表中一些 FULLTEXT索引定義中的列列表完全符合,除非MATCH()在IN BOOLEAN MODE。 6、對(duì)A
9、GAINST() 的參數(shù)必須是一個(gè)常數(shù)字符串。 全文停止字 In、not、 but、 go、 as 等等,IN BOOLEAN MODE 修飾語(yǔ),MySQL 也可以使用 IN BOOLEAN MODE 修飾語(yǔ)來(lái)執(zhí)行一個(gè)邏輯全文搜索。 SELECT * FROM articles WHERE MATCH (title,body) AGAINST (+MySQL -YourSQL IN BOOLEAN MODE); 這個(gè)查詢返回所有包含詞 MySQL 的記錄行,但是它沒(méi)有包含詞 YourSQL。 布爾全文搜索具有以下特點(diǎn): 1、它們不使用 50% 域值。 2、它們不會(huì)按照相關(guān)性漸弱的順序?qū)⑿羞M(jìn)行分
10、類。你可以從上述問(wèn)詢結(jié)果中看到這一點(diǎn):相關(guān)性最高的行是一個(gè)包含兩個(gè)“MySQL” 的行,但它被列在最后的位置,而不是開(kāi)頭位置。 3、即使沒(méi)有FULLTEXT,它們?nèi)匀豢梢怨ぷ?,盡管這種方式的搜索執(zhí)行的速度非常之慢。 4、最小單詞長(zhǎng)度全文參數(shù)和最大單詞長(zhǎng)度全文參數(shù)均適用。 5、停止字適用。,IN BOOLEAN MODE 修飾語(yǔ),邏輯全文搜索支持下面的操作符: + 一個(gè)領(lǐng)頭的加號(hào)表示,該詞必須出現(xiàn)在每個(gè)返回的記錄行中。 - 一個(gè)領(lǐng)頭的減號(hào)表示,該詞必須不出現(xiàn)在每個(gè)返回的記錄行中。 缺省的 (當(dāng)既沒(méi)有加號(hào)也沒(méi)有負(fù)號(hào)被指定時(shí))詞是隨意的,但是包含它的記錄行將被排列地更高一點(diǎn)。這個(gè)模仿沒(méi)有 IN BO
11、OLEAN MODE 修飾詞的 MATCH() . AGAINST() 的行為。 這兩個(gè)操作符用于改變一個(gè)詞的相似性值的基值。 操作符則增加它。參看下面的示例。 ( ) 圓括號(hào)用于對(duì)子表達(dá)式中的詞分組。 一個(gè)領(lǐng)頭的否定號(hào)的作用象一個(gè)否定操作符,引起行相似性的詞的基值為負(fù)的。它對(duì)標(biāo)記一個(gè)噪聲詞很有用。一個(gè)包含這樣的詞的記錄將被排列得低一點(diǎn),但是不會(huì)被完全的排除,因?yàn)檫@樣可以使用 - 操作符。 * 一個(gè)星號(hào)是截?cái)嗖僮鞣2幌肫渌牟僮鞣?,它?yīng)該被追加到一個(gè)詞后,不加在前面。 短語(yǔ),被包圍在雙引號(hào)中,只匹配包含這個(gè)短語(yǔ)(字面上的,就好像被鍵入的)的記錄行。,IN BOOLEAN MODE 修飾語(yǔ),這
12、里是一些示例: apple banana 找至少包含上面詞中的一個(gè)的記錄行 +apple +juice . 兩個(gè)詞均在被包含 +apple macintosh . 包含詞 “apple”,但是如果同時(shí)包含 “macintosh”,它的排列將更高一些 +apple -macintosh . 包含 “apple” 但不包含 “macintosh” +apple +(pie strudel) . 包含 “apple” 和 “pie”,或者包含的是 “apple” 和 “strudel” (以任何次序),但是 “apple pie” 排列得比 “apple strudel” 要高一點(diǎn) apple* .
13、 包含 “apple”,“apples”,“applesauce” 和 “applet” some words . 可以包含 “some words of wisdom”,但不是 “some noise words”,分詞,scws的安裝請(qǐng)參考 注意:在安裝的時(shí)候一定注意,你的項(xiàng)目使用的是什么字符集,安裝對(duì)應(yīng)的scws,否則在分詞的過(guò)程中會(huì)出現(xiàn)無(wú)法分詞的現(xiàn)象。安裝后查看phpinfo會(huì)開(kāi)到scws對(duì)應(yīng)的擴(kuò)展(相應(yīng)的字符集也可以看到?。﹑hp對(duì)應(yīng)的api接口可以參考 根據(jù)您當(dāng)前用的 PHP 版本,下載相應(yīng)已編譯好的 php_scws.dll 擴(kuò)展庫(kù)。 目前支持 PHP-4.4.x 和 PHP-5
14、.2.x 系列,下載地址分別為: php-4.4.x: php-5.2.x: php-5.3.x: 將下載后的 php_scws.dll 放到 php 安裝目錄的 extensions/ 目錄中去(通常為:X:/php/extensions/或 X:/php/ext/)。 建立一個(gè)本地目錄放規(guī)則集文件和詞典文件,建議使用:C:/program files/scws/etc 4. 從 scws 主頁(yè)上下載詞典文件,解壓后將 *.xdb 放到上述目錄中 詞典系列: ,分詞,從 scws 主頁(yè)上下載規(guī)則集文件,解壓后將 *.ini 放到第 3 步建立的目錄 規(guī)則集文件壓縮包: 解壓后有三個(gè)文件分別為 rules.ini rules.utf8.ini rules_cht.utf8.ini 將三件文件拷到第 3 步所述的目錄中 修改 php.ini 在 php.ini 的末尾加入以下幾行: scws
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年江西青年職業(yè)學(xué)院馬克思主義基本原理概論期末考試真題匯編
- 甘肅省白銀市2025年七年級(jí)上學(xué)期期末英語(yǔ)試題附答案
- 2025年湖南交通工程學(xué)院馬克思主義基本原理概論期末考試筆試真題匯編
- 2025年石家莊理工職業(yè)學(xué)院馬克思主義基本原理概論期末考試筆試題庫(kù)
- 2025年黑龍江工商學(xué)院馬克思主義基本原理概論期末考試筆試題庫(kù)
- 2025年南通職業(yè)大學(xué)馬克思主義基本原理概論期末考試筆試真題匯編
- 2024年鄭州工程技術(shù)學(xué)院馬克思主義基本原理概論期末考試真題匯編
- 2024年福建工程學(xué)院馬克思主義基本原理概論期末考試真題匯編
- 2024年沈陽(yáng)機(jī)械工業(yè)職工大學(xué)馬克思主義基本原理概論期末考試筆試真題匯編
- 2025年河南林業(yè)職業(yè)學(xué)院馬克思主義基本原理概論期末考試筆試真題匯編
- 私域流量課件
- 2025年杭州余杭水務(wù)有限公司招聘36人筆試備考試題及答案解析
- 知識(shí)點(diǎn)及2025秋期末測(cè)試卷(附答案)-冀美版小學(xué)美術(shù)四年級(jí)上冊(cè)
- 英語(yǔ)試卷河北省2026屆高三第一次八省聯(lián)考(T8聯(lián)考)(12.24-12.25)
- 2025年中共贛州市贛縣區(qū)委政法委下屬事業(yè)單位面向全區(qū)選調(diào)工作人員備考題庫(kù)有答案詳解
- 2025年幼兒園后勤工作總結(jié)
- 知識(shí)點(diǎn)及2025秋期末測(cè)試卷(附答案)-浙美版(新教材)小學(xué)美術(shù)三年級(jí)上冊(cè)
- 2025山西大地環(huán)境投資控股有限公司社會(huì)招聘116人備考筆試題庫(kù)及答案解析
- 機(jī)器人手術(shù)術(shù)后引流管管理的最佳實(shí)踐方案
- 2025年產(chǎn)品質(zhì)量復(fù)盤(pán)與2026年品控升級(jí)指南
- 2025年瓦檢員考試題庫(kù)及答案
評(píng)論
0/150
提交評(píng)論