2011-07-25 54 views
0

我需要關於文本分析的建議。 該程序是用PHP編寫的。用於文本分析的代碼效率

我的代碼需要接收URL和匹配對DB的網站的話,尋求匹配。

棘手的部分是,字不是寫百達在DB,因爲它們出現在文本。

例如:

比方說,我的數據庫具有以下值: 字=字母

而且網站有: 羅嗦事

我應該輸出: 信件的事情

我的代碼在每次嘗試將搜索到的單詞與數據庫相匹配後都會生成幾個正則表達式。

對於找不到的每個單詞,我向數據庫發出8個查詢。大多數單詞沒有匹配,所以當我們談論一個有數百個單詞的整個網站時,我的CPU級別會跳躍。

我想到了存儲在數據庫中沒有發現globaly因爲他們似乎每一個字(HD成本低於CPU)或可能使一個數組或字典來存儲所有。

我真的很困惑這個項目。它應該服務於很多用戶,當前的代碼服務器將在10-20個用戶請求後終止。

有什麼想法?

編輯: 的搜索詞是不是英語單詞和代碼在Windows 2008服務器上運行

回答

0

謝謝大家對你的答案。 不幸的是沒有任何答案幫助我,也許我不夠清楚。

我結束了與所有對DB(約6000字)的話創建一​​個哈希表,並覈對散列而不是DB解決問題。

的代碼開始了4秒的執行時間,現在是0.5秒! :-)

再次感謝

0

在我看來,像Sphynx & stemming工作。

+0

我不知道我可以使用第三方程序..如果我只需要使用我的代碼來完成此操作,那麼最好的方法是什麼? – Phoenix

+0

什麼讓你不確定? – Wrikken

+0

開始許可,並且服務器不是專用的。 – Phoenix

0

可能是愚蠢的問題,但你有沒有考慮過在你的SQL查詢中使用LIKE子句? 事情是這樣的:

$sql = "SELECT * FROM `your_table` WHERE `your_field` LIKE 'your_search'": 

我通常發現每當我不得不從查詢,我可以把它做對SQL側容易做的返回值過多的字符串操作。

+0

Hm,可能更有效:'SELECT * FROM your_table WHERE'the_entire_document'LIKE CONCAT('%',your_field,'%');' – Wrikken