[英]Find phrases using mysql and php
我正在一個項目上,需要數據庫查詢中的建議。 我正在使用PHP和MySQL。
上下文
phrases
的表,其中包含phrases
列,其中存儲了短語,每個短語由一到三個詞組成。 text
字符串 我需要突出顯示phrases
數據庫表中存在的text
字符串中的所有短語。
我的解決方案
我遍歷了短語列表中的每個短語,並將其與text
進行比較,但是短語的數量很大(100k),因此大約需要2分鍾或更長時間才能完成此匹配。
有沒有更有效的方法?
我將重點介紹如何使用100K值進行比較。 這將需要兩個步驟。
a)編寫一個C ++庫,並使用擴展將其鏈接到PHP。 Google PHP-CPP。 有一個框架可讓您執行此操作。
b)在C / C ++內部,您需要創建一個時間復雜度為O(n)的數據結構。 n是您要搜索的短語的長度。 通常,這稱為trys數據結構。 通常,這用於沒有空格的單詞(而非短語)。 但是,您當然可以編寫自己的。
這是一個鏈接,其中包含實現一詞。 aka字典。 http://www.geeksforgeeks.org/trie-insert-and-search/
因為數量為100K,所以這需要大量的內存。 公平地說,您需要一個大型系統。 但是,當您尋求更好的性能時,內存往往是一個折衷方案。
替代方法僅PHP。 在這里,從文本輸入中提取短語。 將它們轉換為哈希。 您所包含的表數據也應存儲在哈希中。 [需要巨大的內存]。 每次搜索又稱為O(1),此處的性能將很快提高。 因此,對於k個單詞的句子。 您的時間復雜度將為O(K階乘)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.