翻譯|使用教程|編輯:莫成敏|2019-12-24 14:54:48.723|閱讀 642 次
概述:在MySQL中執行全文搜索系列文章中,這是第3部分內容,繼續第2部分描述全文搜索,并且介紹布爾全文搜索。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
Navicat for MySQL 是一套管理和開發 MySQL 或 MariaDB 的理想解決方案。使用Navicat for MySQL可以同時連接到 MySQL 和 MariaDB。Navicat for MySQL提供了強大的前端功能,為數據庫管理、開發和維護提供了直觀的圖形界面。對新手和專業人士來說,Navicat for MySQL都是管理和開發 MySQL 或 MariaDB的強大工具。
歡迎閱讀本系列有關MySQL中的全文本索引和搜索的第3部分。在第1部分中,我們了解了MySQL如何通過全文索引以及以下三種不同的全文搜索類型提供全文搜索功能:
自然語言全文搜索
布爾全文搜索
查詢擴展搜索
在第2部分中,描述了如何在Navicat for MySQL中執行自然語言全文搜索。今天的文章將繼續第2部分的內容,并且討論下一種全文搜索:布爾全文搜索。
布爾模式描述
布爾模式比自然語言搜索更依賴于單詞。這樣,布爾全文搜索支持非常復雜的查詢,其中包括布爾運算符。對于有經驗的用戶,布爾全文搜索提供了一種執行某些非常高級的搜索的方法。
運作方式如下:
要在布爾模式下執行全文搜索,請在AGAINST表達式中包含IN BOOLEAN MODE修飾符。回想一下,在之前的文章中,我們向Sakila示例數據庫的電影表中添加了全文索引,以便可以在description字段中執行全文搜索。這是一個示例,該示例返回所有描述中包含“Butler”一詞的電影:
一些更復雜的例子
上面的搜索非常簡單,不需要全文本搜索。一旦開始執行諸如排除包含某些關鍵字的匹配之類的操作,它將變得更加有趣。例如,通過在單詞“Documentary”之前加上排除布爾運算符(-),我們可以找到描述中包含非紀錄片的“Butler”一詞的電影:
這將返回61行,而之前的查詢為73行。
多詞匹配
我們還可以使用(+)包含運算符搜索描述與多個單詞匹配的行。給單詞加上前綴會告訴搜索引擎只匹配包含該單詞的行。當存在多個單詞(例如“+ Butler Hunter Waitress”)時,這將成為重要的區別。在這種情況下,將返回其描述包含單詞“Butler”以及所有其他兩個單詞之一的所有行:
將上面的結果與由“Butler”和“Hunter”兩個詞加上(+)包括運算符的查詢所產生的結果進行比較:
現在,匹配的行必須同時包含“Butler”和“Hunter”,但不一定包含“Waitress”。
相關性排名快速說明
對InnoDB的全文搜索排名與對MyISAM的排名不同,因為InnoDB全文搜索是基于Sphinx全文搜索引擎建模的,并且所使用的算法基于BM25和TF-IDF排名算法。
一些運算符會影響排名,因此我們可以進一步調整結果。例如,我們可以搜索包含單詞“Butler”的行,但是如果包含單詞“Hunter”或“Waitress”的行則排在下面:
結論
在今天的文章中,我們學習了如何使用Navicat for MySQL執行布爾全文搜索。有興趣進一步了解Navicat for MySQL嗎?您可以免費下載試用版,以進行評估!
相關內容推薦:
Navicat使用教程:在MySQL中執行全文搜索(第1部分)
Navicat使用教程:在MySQL中執行全文搜索(第2部分)
想要購買Navicat for MySQL正版授權,或了解更多產品信息請點擊
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自: