首頁  >  文章  >  資料庫  >  mysql查詢擴充技術教程

mysql查詢擴充技術教程

巴扎黑
巴扎黑原創
2017-05-12 14:18:441231瀏覽

查詢擴充功能用來設法放寬所傳回的全文本搜尋結果的範圍。考慮下面的情況。你想找出所有提到 anvils 的註釋。只有一個註解包含字 anvils ,但你還想找出可能與你的搜尋有關的所有其他行,即使它們不包含anvils 。

這也是查詢擴充功能的一項任務。在使用查詢擴充時,MySQL對資料和索引進行兩次掃描來完成搜尋:

1。首先,進行一個基本的全文本搜索,找出與搜尋條件相符的所有行;

2.其次,MySQL檢查這些匹配行並選擇所有有用的單字(我們將會簡要地解釋MySQL如何斷定什麼有用,什麼無用)。

3.再其次,MySQL再次進行全文本搜索,這次不僅使用原來的條件,而且還使用所有有用的詞。

利用查詢擴展,能找出可能相關的結果,即使它們並不精確地包含所尋找的字。

只用於MySQL版本4.1.1或更進階的版本 查詢擴充功能是在MySQL 4.1.1中引入的,因此不能用於先前的版本。

下面舉一個例子,首先進行一個簡單的全文本搜索,沒有查詢擴展:

輸入:

select note_text from productnotes where match(note_text) against('anvils');

輸出:

mysql查詢擴充技術教程

分析:只有一行包含詞anvils ,因此只回傳一行。

下面是相同的搜索,這次使用查詢擴充:

輸入:

select note_text from productnotes where match(note_text) against('anvils' with query expansion);

輸出:

mysql查詢擴充技術教程

分析:這次返回了7行。第一行包含詞 anvils ,因此等級最高。第二行與 anvils 無關,但因為它包含第一行中的兩個字( customer和 recommend ),所以也被檢索出來。第3行也包含這兩個相同的詞,但它們在文本中的位置更靠後且分開得更遠,因此也包含這一行,但等級為第三。第三行確實也沒有涉及 anvils (按它們的產品名)。

如所見,查詢擴充功能大大增加了傳回的行數,但這樣做也增加了你實際上並不想要的行的數目。

行越多越好 表中的行越多(這些行中的文字就越多),使用查詢擴充回傳的結果越好。

以上是mysql查詢擴充技術教程的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn