自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

MySQL全文搜索之布爾搜索

運維 數(shù)據(jù)庫運維 MySQL
本文講述了應(yīng)用MySQL內(nèi)置函數(shù)來實現(xiàn)全文搜索功能中的布爾全文搜索,希望可以給您帶來幫助。

利用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 ... |
+----+-----------------------+-------------------------------------+

這個問詢檢索所有包含單詞“MySQL”的行,但不檢索包含單詞“YourSQL”的行。

布爾全文搜索具有以下特點:

◆ 它們不使用 50% 域值。.

◆ 它們不會按照相關(guān)性漸弱的順序?qū)⑿羞M行分類。你可以從上述問詢結(jié)果中看到這一點:相關(guān)性***的行是一個包含兩個“MySQL” 的行,但它被列在***的位置,而不是開頭位置。

◆ 即使沒有FULLTEXT,它們?nèi)匀豢梢怨ぷ?,盡管這種方式的搜索執(zhí)行的速度非常之慢。

◆ 最小單詞長度全文參數(shù)和***單詞長度全文參數(shù)均適用。

◆ 停止字適用。

布爾全文搜索的性能支持以下操作符:

◆ +

一個前導(dǎo)的加號表示該單詞必須 出現(xiàn)在返回的每一行的開頭位置。

◆ -

一個前導(dǎo)的減號表示該單詞一定不能出現(xiàn)在任何返回的行中。

◆ (無操作符)

在默認狀態(tài)下(當(dāng)沒有指定 + 或–的情況下),該單詞可有可無,但含有該單詞的行等級較高。這和MATCH() ... AGAINST()不使用IN BOOLEAN MODE修改程序時的運作很類似。 

◆ > <

這兩個操作符用來改變一個單詞對賦予某一行的相關(guān)值的影響。 > 操作符增強其影響,而 <操作符則減弱其影響。請參見下面的例子。

◆ ( )

括號用來將單詞分成子表達式。括入括號的部分可以被嵌套。

◆ ~

一個前導(dǎo)的代字號用作否定符, 用來否定單詞對該行相關(guān)性的影響。 這對于標(biāo)記“noise(無用信息)”的單詞很有用。包含這類單詞的行較其它行等級低,但因其可能會和-號同時使用,因而不會在任何時候都派出所有無用信息行。

◆ *

星號用作截斷符。于其它符號不同的是,它應(yīng)當(dāng)被追加到要截斷的詞上。

◆ "

一個被括入雙引號的短語 (‘"’) 只和字面上包含該短語輸入格式的行進行匹配。全文引擎將短語拆分成單詞,在FULLTEXT索引中搜索該單詞。非單詞字符不需要嚴密的匹配:短語搜索只要求符合搜索短語包含的單詞且單詞的排列順序相同的內(nèi)容。例如,"test phrase" 符合 "test, phrase"。

若索引中不存在該短語包含的單詞,則結(jié)果為空。例如,若所有單詞都是禁用詞,或是長度都小于編入索引單詞的最小長度,則結(jié)果為空。

以下例子展示了一些使用布爾全文符號的搜索字符串:

◆ 'apple banana'

尋找包含至少兩個單詞中的一個的行。

◆ '+apple +juice'

尋找兩個單詞都包含的行。

◆ '+apple macintosh'

尋找包含單詞“apple”的行,若這些行也包含單詞“macintosh”, 則列為更高等級。

◆ '+apple -macintosh'

尋找包含單詞“apple” 但不包含單詞 “macintosh”的行。

◆ '+apple +(>turnover

尋找包含單詞“apple”和“turnover” 的行,或包含“apple” 和“strudel”的行 (無先后順序),然而包含 “apple turnover”的行較包含“apple strudel”的行排列等級更為高。

◆ 'apple*'

尋找包含“apple”、“apples”、“applesauce”或“applet”的行。

◆ '"some words"'

尋找包含原短語“some words”的行 (例如,包含“some words of wisdom” 的行,而非包含  “some noise words”的行)。注意包圍詞組的‘"’符號是界定短語的操作符字符。它們不是包圍搜索字符串本身的引號。

【編輯推薦】

  1. 利用MySQL內(nèi)置函數(shù)實現(xiàn)全文搜索功能
  2. MySQL內(nèi)置函數(shù)中的日期和時間函數(shù)詳解
  3. MySQL中的字符串比較函數(shù)
責(zé)任編輯:楊鵬飛 來源: 網(wǎng)絡(luò)轉(zhuǎn)載
相關(guān)推薦

2015-04-03 11:23:11

JavaScript全文搜索相關(guān)度評分

2018-08-22 14:25:42

搜索LuceneQuery

2010-06-10 13:54:10

MySQL全文搜索

2010-06-11 17:00:34

2009-02-25 13:41:49

全文搜索內(nèi)置函數(shù)MySQL

2011-05-16 13:24:00

MySQL全文搜索效率

2025-02-05 07:26:45

2022-03-22 15:20:32

微信全文搜索

2025-01-06 09:03:41

2014-10-14 09:49:47

Postgres數(shù)據(jù)庫

2023-12-10 20:33:50

Redis搜索全文

2020-06-10 08:23:44

JavaScript開發(fā)Web

2018-12-28 09:48:11

SolrElasticSear搜索

2017-08-17 16:42:38

Elastic 全文搜索服務(wù)器

2021-04-12 10:38:17

ElasticSearSolrJava

2013-11-15 17:34:14

UnixLinuxRecoll

2025-02-26 05:00:00

DFS算法遞歸

2023-12-20 11:53:55

Redis場景搜索

2012-04-13 09:05:41

LuceneJava

2024-04-16 09:53:56

PostgreSQL數(shù)據(jù)庫優(yōu)化索引
點贊
收藏

51CTO技術(shù)棧公眾號