利用IN BOOLEAN MODE修改程序,MySQL 也可以執(zhí)行布爾全文搜索:
mysql> SELECT * FROM articles WHERE MATCH (title,body)
-> AGAINST ('+MySQL -YourSQL' IN BOOLEAN MODE);
+----+-----------------------+-------------------------------------+
| id | title | body |
+----+-----------------------+-------------------------------------+
| 1 | MySQL Tutorial | DBMS stands for DataBase ... |
| 2 | How To Use MySQL Well | After you went through a ... |
| 3 | Optimizing MySQL | In this tutorial we will show ... |
| 4 | 1001 MySQL Tricks | 1. Never run mysqld as root. 2. ... |
| 6 | MySQL Security | When configured properly, MySQL ... |
+----+-----------------------+-------------------------------------+
這個(gè)問(wèn)詢(xún)檢索所有包含單詞“MySQL”的行,但不檢索包含單詞“YourSQL”的行,
MySQL全文搜索之布爾搜索
。布爾全文搜索具有以下特點(diǎn):
◆ 它們不使用 50% 域值。.
◆ 它們不會(huì)按照相關(guān)性漸弱的順序?qū)⑿羞M(jìn)行分類(lèi)。你可以從上述問(wèn)詢(xún)結(jié)果中看到這一點(diǎn):相關(guān)性最高的行是一個(gè)包含兩個(gè)“MySQL” 的行,但它被列在最后的位置,而不是開(kāi)頭位置。
◆ 即使沒(méi)有FULLTEXT,它們?nèi)匀豢梢怨ぷ鳎M管這種方式的搜索執(zhí)行的速度非常之慢。
◆ 最小單詞長(zhǎng)度全文參數(shù)和最大單詞長(zhǎng)度全文參數(shù)均適用。
◆ 停止字適用。
布爾全文搜索的性能支持以下操作符:
◆ +
一個(gè)前導(dǎo)的加號(hào)表示該單詞必須 出現(xiàn)在返回的每一行的開(kāi)頭位置。
◆ -
一個(gè)前導(dǎo)的減號(hào)表示該單詞一定不能出現(xiàn)在任何返回的行中。
◆ (無(wú)操作符)
在默認(rèn)狀態(tài)下(當(dāng)沒(méi)有指定 + 或–的情況下),該單詞可有可無(wú),但含有該單詞的行等級(jí)較高。這和MATCH() ... AGAINST()不使用IN BOOLEAN MODE修改程序時(shí)的運(yùn)作很類(lèi)似,
電腦資料
《MySQL全文搜索之布爾搜索》(http://www.szmdbiao.com)!◆ > <
這兩個(gè)操作符用來(lái)改變一個(gè)單詞對(duì)賦予某一行的相關(guān)值的影響。 > 操作符增強(qiáng)其影響,而 <操作符則減弱其影響。請(qǐng)參見(jiàn)下面的例子。
◆ ( )
括號(hào)用來(lái)將單詞分成子表達(dá)式。括入括號(hào)的部分可以被嵌套。
◆ ~
一個(gè)前導(dǎo)的代字號(hào)用作否定符, 用來(lái)否定單詞對(duì)該行相關(guān)性的影響。 這對(duì)于標(biāo)記“noise(無(wú)用信息)”的單詞很有用。包含這類(lèi)單詞的行較其它行等級(jí)低,但因其可能會(huì)和-號(hào)同時(shí)使用,因而不會(huì)在任何時(shí)候都派出所有無(wú)用信息行。
◆ *
星號(hào)用作截?cái)喾S谄渌?hào)不同的是,它應(yīng)當(dāng)被追加到要截?cái)嗟脑~上。
◆ "
一個(gè)被括入雙引號(hào)的短語(yǔ) (‘"’) 只和字面上包含該短語(yǔ)輸入格式的行進(jìn)行匹配。全文引擎將短語(yǔ)拆分成單詞,在FULLTEXT索引中搜索該單詞。非單詞字符不需要嚴(yán)密的匹配:短語(yǔ)搜索只要求符合搜索短語(yǔ)包含的單詞且單詞的排列順序相同的內(nèi)容。例如,"test phrase" 符合 "test, phrase"。
若索引中不存在該短語(yǔ)包含的單詞,則結(jié)果為空。例如,若所有單詞都是禁用詞,或是長(zhǎng)度都小于編入索引單詞的最小長(zhǎng)度,則結(jié)果為空。
以下例子展示了一些使用布爾全文符號(hào)的搜索字符串:
◆ 'apple banana'
尋找包含至少兩個(gè)單詞中的一個(gè)的行。
◆ '+apple +juice'
尋找兩個(gè)單詞都包含的行。
◆ '+apple macintosh'
尋找包含單詞“apple”的行,若這些行也包含單詞“macintosh”, 則列為更高等級(jí)。
◆ '+apple -macintosh'
尋找包含單詞“apple” 但不包含單詞 “macintosh”的行。
◆ '+apple +(>turnover
尋找包含單詞“apple”和“turnover” 的行,或包含“apple” 和“strudel”的行 (無(wú)先后順序),然而包含 “apple turnover”的行較包含“apple strudel”的行排列等級(jí)更為高。
◆ 'apple*'
尋找包含“apple”、“apples”、“applesauce”或“applet”的行。
◆ '"some words"'
尋找包含原短語(yǔ)“some words”的行 (例如,包含“some words of wisdom” 的行,而非包含 “some noise words”的行)。注意包圍詞組的‘"’符號(hào)是界定短語(yǔ)的操作符字符。它們不是包圍搜索字符串本身的引號(hào)。