Navicat使用教程:在MySQL中執(zhí)行全文搜索(第3部分)-布爾全文搜索
Navicat for MySQL 是一套管理和開發(fā) MySQL 或 MariaDB 的理想解決方案。使用Navicat for MySQL可以同時連接到 MySQL 和 MariaDB。Navicat for MySQL提供了強大的前端功能,為數(shù)據(jù)庫管理、開發(fā)和維護(hù)提供了直觀的圖形界面。對新手和專業(yè)人士來說,Navicat for MySQL都是管理和開發(fā) MySQL 或 MariaDB的強大工具。
歡迎閱讀本系列有關(guān)MySQL中的全文本索引和搜索的第3部分。在第1部分中,我們了解了MySQL如何通過全文索引以及以下三種不同的全文搜索類型提供全文搜索功能:
自然語言全文搜索
布爾全文搜索
查詢擴(kuò)展搜索
在第2部分中,描述了如何在Navicat for MySQL中執(zhí)行自然語言全文搜索。今天的文章將繼續(xù)第2部分的內(nèi)容,并且討論下一種全文搜索:布爾全文搜索。
布爾模式描述
布爾模式比自然語言搜索更依賴于單詞。這樣,布爾全文搜索支持非常復(fù)雜的查詢,其中包括布爾運算符。對于有經(jīng)驗的用戶,布爾全文搜索提供了一種執(zhí)行某些非常高級的搜索的方法。
運作方式如下:
要在布爾模式下執(zhí)行全文搜索,請在AGAINST表達(dá)式中包含IN BOOLEAN MODE修飾符。回想一下,在之前的文章中,我們向Sakila示例數(shù)據(jù)庫的電影表中添加了全文索引,以便可以在description字段中執(zhí)行全文搜索。這是一個示例,該示例返回所有描述中包含“Butler”一詞的電影:
一些更復(fù)雜的例子
上面的搜索非常簡單,不需要全文本搜索。一旦開始執(zhí)行諸如排除包含某些關(guān)鍵字的匹配之類的操作,它將變得更加有趣。例如,通過在單詞“Documentary”之前加上排除布爾運算符(-),我們可以找到描述中包含非紀(jì)錄片的“Butler”一詞的電影:
這將返回61行,而之前的查詢?yōu)?3行。
多詞匹配
我們還可以使用(+)包含運算符搜索描述與多個單詞匹配的行。給單詞加上前綴會告訴搜索引擎只匹配包含該單詞的行。當(dāng)存在多個單詞(例如“+ Butler Hunter Waitress”)時,這將成為重要的區(qū)別。在這種情況下,將返回其描述包含單詞“Butler”以及所有其他兩個單詞之一的所有行:
將上面的結(jié)果與由“Butler”和“Hunter”兩個詞加上(+)包括運算符的查詢所產(chǎn)生的結(jié)果進(jìn)行比較:
現(xiàn)在,匹配的行必須同時包含“Butler”和“Hunter”,但不一定包含“Waitress”。
相關(guān)性排名快速說明
對InnoDB的全文搜索排名與對MyISAM的排名不同,因為InnoDB全文搜索是基于Sphinx全文搜索引擎建模的,并且所使用的算法基于BM25和TF-IDF排名算法。
一些運算符會影響排名,因此我們可以進(jìn)一步調(diào)整結(jié)果。例如,我們可以搜索包含單詞“Butler”的行,但是如果包含單詞“Hunter”或“Waitress”的行則排在下面:
結(jié)論
在今天的文章中,我們學(xué)習(xí)了如何使用Navicat for MySQL執(zhí)行布爾全文搜索。有興趣進(jìn)一步了解Navicat for MySQL嗎?您可以免費下載試用版,以進(jìn)行評估!
相關(guān)內(nèi)容推薦:
Navicat使用教程:在MySQL中執(zhí)行全文搜索(第1部分)
Navicat使用教程:在MySQL中執(zhí)行全文搜索(第2部分)
想要購買Navicat for MySQL正版授權(quán),或了解更多產(chǎn)品信息請點擊【咨詢在線客服】