2012-06-07 98 views
0

我的PHP腳本需要檢查整個數據數組中的匹配。目前它正在尋找確切的字符串匹配。我希望它不那麼嚴格。例如,如果數組包含字符串「Tom and Jerry」,我想返回true爲:「Tom Jerry」,「Tom & Jerry」,甚至可能是「Tom and Jery」。我發現PHP搜索引擎的鏈接,他們更復雜,而不是我真正需要的。我的數據非常小而且動態,所以沒有索引。基本的PHP搜索(引擎)腳本

我知道我可以寫一個大毛茸茸的正則表達式,但我敢肯定我會重新發明輪子,因爲我確信其他人已經這樣做了。任何建議在哪裏看或如何處理這將非常感激。

編輯:澄清,我試圖避免輸入所有動態生成的數據到數據庫。

+0

你的數據有多小或有多大?開發拼寫變化替代方法的手冊列表是否可行?因爲一臺電腦也會拿出「貝瑞」,這可能不是你想要的。 –

+0

該數據是由圖API返回的Facebook配置文件數組。我的腳本根據用戶提供的搜索查詢搜索僱主的名字 – emersonthis

回答

1

如果數據在MySQL中,您可以使用full text search。這很容易發展;問題是:這是否會使解決方案過於沉重?

+0

數據不在MySQL中,因爲它是由Facebook圖形API返回的。理論上,我想可以將它轉儲到數據庫中,但它看起來像是過度殺人,因爲這些數據完全相對於每個用戶。 – emersonthis

1

它可能需要一些試驗和錯誤,但你可以這樣做:

  • 製作「中」字,可能是不存在的,這樣的「和」,的手動名單,「的」,等等(如如你的Tom Jerry例子)。
  • 計算字符串和搜索查詢之間的Hamming distance。如果它很低(可能最多一個或兩個),則返回true。
  • 否則,返回false。
+0

這與我的想法是一致的。我希望比我更聰明的人已經做得比我更好。如果不是,你能指出我在計算漢明距離的正確方向嗎?有內置的PHP函數嗎? – emersonthis