2011-04-26 38 views
0

我想要一個長字符串(數十萬個字符),並將其與一個關鍵字數組進行比較,以確定數組中的哪一個關鍵字比其他關鍵字多。比較字符串內關鍵字的流行度

這似乎很容易,但我有點擔心strstr執行此任務。

我應該用不同的方式做到這一點嗎?

謝謝,

+0

關鍵字的數組可以包含的短語,或將關鍵字永遠是一個字? – 2011-04-26 22:36:09

+0

可以包含短語,您可以詳細說明單個關鍵字和短語之間的差異/性能變化嗎? – 2011-04-26 22:37:17

+0

閱讀一些答案,你會發現爲什麼。 – gd1 2011-04-26 22:38:25

回答

2

我認爲你可以用一種不同的方式做一次掃描,如果你以正確的方式做,它可以爲你帶來戲劇性的改善。

創建一個關聯數組,其中鍵是關鍵字,值是出現次數。

逐字閱讀字符串,我的意思是說一個字,並把它放在一個變量中。然後,將其與所有關鍵字進行比較(有幾種方法可以做到這一點,您可以使用isset查詢關聯數組)。當找到關鍵字時,增加其計數器。

我希望PHP實現與HashMap的一些類似的thingie關聯數組...

0

解析線性方式的話。對於你遇到的每一個單詞,在你正在尋找的單詞的關聯數組中增加它的計數(當然,跳過那些你不感興趣的單詞)。這將比strstr快得多。

+0

因此,得到字符串,使用空格「爆炸」作爲分隔符,遍歷關鍵字數組,將每個分解詞與關鍵字進行比較?聽起來不錯.. – 2011-04-26 22:39:54

+0

不對我。我不喜歡'爆炸'由於性能原因,因爲一個詞可以被其他人以幾種方式劃分 – gd1 2011-04-26 22:43:23

+0

@Giacomo - 那麼你如何建議去做? – 2011-04-26 22:50:31