在第 1 部分中,我們了解了 MySQL 如何透過 FULLTEXT 索引以及三種不同類型的全文檢索搜尋提供全文搜尋功能。在本篇文章中,我們將學習如何在 Navicat for MySQL 中執行自然語言全文檢索搜尋。
自然語言全文檢索搜尋定義
自然語言全文檢索搜尋的思想是尋找與自然人類語言查詢相關的文件(列),例如「自然語言全文檢索搜尋如何運作?」。如果你曾經使用過像 Google 這樣的網路搜尋引擎,它就是這樣運作的!
使用零加正浮點數值確定相關性,其中零表示沒有相似性。相關性可以根據各種因素,包括文件中單字的數量,文件中唯一單字的數量,集合中單字的總數以及包含特定單字的文件(列)的數量。
MySQL 自然語言全文檢索搜尋例子
在 MySQL 中,使用 MATCH() 和 AGAINST() 函式執行自然語言全文檢索搜尋。MATCH() 函式指定要搜尋的欄,而 AGAINS() 函式決定要使用的搜尋運算式。
Sakila 範例資料庫代表一個虛構的 DVD 出租商店。film 資料表包含有關商店藏品中每部電影的相關資訊。它的欄包括電影的標題、發行年份、放映時間和描述。這是 Navicat 中表單檢視所顯示的範例列。它允許你以表格的形式檢視、更新、插入或刪除資料,其中目前記錄顯示為欄位名稱及其數值:
加入索引到 description 欄
為了以全文本模式搜尋 description 欄位,我們首先必須在資料表建立全文索引。我們可以在 Navicat 中輕鬆地做到這一點,如下所示:
- 在資料表設計器中開啟 film 資料表。
- 選取「索引」索引標籤。
- 按一下「加入索引」按鈕。
- 將新索引命名為「idx_description」。.
- 在「欄位」文字方塊中,選取 description 欄。
- 從「索引類型」下拉式清單中選取 FULLTEXT:
- 將「索引方法」留為空白,因為 FULLTEXT 索引不需要索引方法。
- 最後,按一下「儲存」按鈕建立索引。
到了查詢時間!
讓我們開啟查詢編輯器並撰寫一個查詢,該查詢將查閱 description 包含片語「Database Administrator」的列。Navicat 可以透過建議欄位名稱甚至函式來幫助我們組成查詢:
這是片語“Database Administrator”的最終查詢和結果。關於 DBA 的電影數量驚人地多!
檢視分數
如上所述,使用零加正浮點數值確定相關性,其中零表示沒有相似性。我們可以透過將 MATCH() 和 AGAINST() 函式加到欄清單中來檢視每個記錄的分數,例如:
這將有助於我們確定最接近的符合項目的分界點。
總結
在今天的文章中,我們學習了如何在Navicat for MySQL執行自然語言全文檢索搜尋。
對 Navicat for MySQL 感興趣嗎?你可以完全免費試用 14 天以進行評估。