2013-06-01 45 views
0

我正在處理電子郵件應用程序。下面是背景:PHP根據任意搜索查詢搜索電子郵件地址和正文內容的電子郵件數據庫

  • Emailaddresses存儲在addresses
  • 消息內容存儲在一個message_contents

有在頁面的頂部的搜索欄,並且流程的行動將是用戶將鍵入以下內容,例如:Jonathan Kushner programming,它會鑽到一個點,本質上在這種情況下,它找到一個電子郵件包含Jonathan Kushner在地址和郵件正文編程中的字。

這是問題所在。目前,我正在對匹配用戶查詢的電子郵件地址執行MySQL LIKES,以及針對與用戶查詢匹配的郵件內容執行MySQL LIKES。問題是,就我們的示例而言,它永遠不會找到匹配Jonathan Kushner programming的電子郵件地址,並且它不會匹配任何表示Jonathan Kushner programming的正文內容。

因此,據說,我需要完成的是能夠以某種方式識別查詢輸入並發現什麼是名稱和什麼是主體內容。我無法理解我是世界上第一個將地址與數據庫中的正文內容分開的人,所以它肯定有可能。

也許我應該設置它,以便用戶必須在查詢的第一個單詞中鍵入一個名稱或一個電子郵件地址,然後在X個單詞之後他們能夠鍵入內容中的關鍵字。我不太喜歡這個想法,而且它無法工作,因爲如果用戶沒有名字或電子郵件地址來搜索整個理論就會崩潰,但我不知道如何解決這個問題。

另一個想法是可能分開單詞並對每個單詞和單詞組合執行邏輯。

任何幫助將不勝感激。

+0

看看outlook或gmail,當搜索時指定是否搜索郵件正文或電子郵件地址或名稱,我認爲這是更好的方法 – 2013-06-01 02:05:27

回答

0

我已經爲電子商務搜索功能做了這樣的事情,我將單詞分開,然後使用循環將單詞添加到查詢中。

WHERE address LIKE '%$search[0]%' OR address LIKE '%$search[1]%' OR contents LIKE '%$search[0]%' 

希望這是有用的,我會玩一下一些查詢,看看跳進代碼之前的作品。當你開始執行代碼時,我會建議將搜索查詢分解爲一個單詞數組,然後使用foreach循環將它們添加到查詢中。

玩得開心,讓我知道你是怎麼玩的!

相關問題