簡體   English   中英

使用mysql和php查找短語

[英]Find phrases using mysql and php

我正在一個項目上,需要數據庫查詢中的建議。 我正在使用PHP和MySQL。

上下文

  • 我有一個名為phrases的表,其中包含phrases列,其中存儲了短語,每個短語由一到三個詞組成。
  • 我有一個包含500-1000個單詞的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM