在本教學中,您將瞭解到基於自動相關性回饋的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');
執行上面查詢語句,得到以下結果 -
如上所見,搜索結果其產品名稱包含1992
有2
個產品。
第三,可以通過使用查詢擴展來擴展搜索結果,如下所示:
SELECT productName
FROM products
WHERE MATCH(productName)
AGAINST('1992' WITH QUERY EXPANSION);
執行上面查詢語句,得到以下結果 -
當我們使用查詢擴展時,在搜索結果中得到了更多行。 前兩行是最相關的,其他行來自前兩列的相關關鍵字,例如:Ferrari
。
請注意,通過返回不相關的結果,盲查詢擴展會顯著增加雜訊。 強烈建議您僅在搜索到的關鍵字較短時才使用查詢擴展。
在本教學中,當用戶提供的關鍵字很短時,我們向您介紹了MySQL查詢擴展,以擴大搜索結果。