mysql查詢擴展技術圖文說明教程
發表時間:2023-09-06 來源:明輝站整理相關軟件相關文章人氣:
[摘要]查詢擴展用來設法放寬所返回的全文本搜索結果的范圍。考慮下面的情況。你想找出所有提到 anvils 的注釋。只有一個注釋包含詞 anvils ,但你還想找出可能與你的搜索有關的所有其他行,即使它們不包含anvils 。這也是查詢擴展的一項任務。在使用查詢擴展時,MySQL對數據和索引進行兩遍掃描來完...
查詢擴展用來設法放寬所返回的全文本搜索結果的范圍。考慮下面的情況。你想找出所有提到 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');
輸出:

分析:只有一行包含詞 anvils ,因此只返回一行。
下面是相同的搜索,這次使用查詢擴展:
輸入:
select note_text from productnotes where match(note_text) against('anvils' with query expansion);
輸出:

分析:這次返回了7行。第一行包含詞 anvils ,因此等級最高。第二行與 anvils 無關,但因為它包含第一行中的兩個詞( customer和 recommend ),所以也被檢索出來。第3行也包含這兩個相同的詞,但它們在文本中的位置更靠后且分開得更遠,因此也包含這一行,但等級為第三。第三行確實也沒有涉及 anvils (按它們的產品名)。
正如所見,查詢擴展極大地增加了返回的行數,但這樣做也增加了你實際上并不想要的行的數目。
行越多越好 表中的行越多(這些行中的文本就越多),使用查詢擴展返回的結果越好。
以上就是mysql查詢擴展技術教程的詳細內容,更多請關注php中文網其它相關文章!
學習教程快速掌握從入門到精通的SQL知識。