MySQL查詢擴充套件

2019-10-16 22:55:36

在本教學中,您將了解到基於自動相關性反饋的MySQL查詢擴充套件擴充套件搜尋結果。

MySQL查詢擴充套件簡介

在某些情況下,使用者希望根據他們擁有的知識來搜尋資訊。使用者使用他們的知識來定義關鍵字來搜尋資訊,通常這些關鍵字太短。

為了幫助使用者根據很短的關鍵字找到他們想要的內容,MySQL全文搜尋引擎引入了一個稱為查詢擴充套件的概念。

查詢擴充套件用於根據自動相關性反饋(或盲查詢擴充套件)來擴大全文搜尋的搜尋結果。 從技術上講,當使用查詢擴充套件時,MySQL全文搜尋引擎將執行以下步驟:

  • 首先,MySQL全文搜尋引擎會查詢與蒐尋查詢匹配的所有行。
  • 其次,它檢查搜尋結果中的所有行,並找到相關詞。
  • 第三,它再次執行搜尋,但是基於相關詞而不是使用者提供的原始關鍵詞來查詢匹配。

從應用程式的角度來看,當搜尋結果太少時,可以使用查詢擴充套件。再次執行搜尋,但通過查詢擴充套件為使用者提供與他們正在查詢的內容相關和相關的更多資訊。

要使用查詢擴充套件,請在AGAINST()函式中使用WITH QUERY EXPANSION搜尋修飾符。以下說明使用WITH QUERY EXPANSION搜尋修飾符查詢的語法。

SELECT column1, column2
FROM table1
WHERE MATCH(column1,column2) 
      AGAINST('keyword',WITH QUERY EXPANSION);

MySQL查詢擴充套件範例

我們來看一下查詢擴充套件的例子,看看它是如何工作的。

我們將使用products表的productName列來演示查詢擴充套件功能。首先,啟用此列的全文搜尋索引

ALTER TABLE products 
ADD FULLTEXT(productName);

其次,搜尋的產品名稱包含1992的項,而不使用查詢擴充套件。

SELECT productName
FROM products
WHERE MATCH(productName) AGAINST('1992');

執行上面查詢語句,得到以下結果 -



如上所見,搜尋結果其產品名稱包含19922個產品。

第三,可以通過使用查詢擴充套件來擴充套件搜尋結果,如下所示:

SELECT productName
FROM products
WHERE MATCH(productName) 
      AGAINST('1992' WITH QUERY EXPANSION);

執行上面查詢語句,得到以下結果 -



當我們使用查詢擴充套件時,在搜尋結果中得到了更多行。 前兩行是最相關的,其他行來自前兩列的相關關鍵字,例如:Ferrari

請注意,通過返回不相關的結果,盲查詢擴充套件會顯著增加噪聲。 強烈建議您僅在搜尋到的關鍵字較短時才使用查詢擴充套件。

在本教學中,當使用者提供的關鍵字很短時,我們向您介紹了MySQL查詢擴充套件,以擴大搜尋結果。