簡體   English   中英

為網站創建智能的預測搜索

[英]Creating a smart predictive search for website

我正在嘗試為我正在制作的網站編寫一個預測性搜索系統。

完成的功能將非常像這樣:

在此處輸入圖片說明

我不確定執行此操作的最佳方法,但是到目前為止,這是我所擁有的:

搜索表:
id-期限-計數

每次進行搜索時,都會將其插入到搜索表中。


當用戶在搜索輸入中輸入字符時,將發生以下情況:

  1. 該頁面向搜索PHP文件發出AJAX請求
  2. PHP文件連接到MySQL數據庫並執行查詢: SELECT * FROM searches WHERE term LIKE 'x%' AND count >= 10 ORDER BY count DESC LIMIT 10 (x =搜索輸入中的文本)
  3. 然后,根據頁面上列出的10條基於過去搜索條件的排名最高的結果

該解決方案遠非完美。 如果任何隨機人搜索相同的術語10次,它將顯示為推薦搜索(如果有人要搜索以相同字符開頭的術語)。 我的意思是,如果有人搜索“ poo poo” 10次,然后該網站上有人搜索“ po”以尋找土豆,那么他們就會將“ poo poo”視為熱門搜索。 這不酷

我想出了一些解決此問題的想法。 例如,我可以將搜索表中的每個插入查詢限制為用戶的IP地址。 但是,這不能完全解決問題,如果用戶具有動態IP地址,則可以重新啟動調制解調器並在每個IP地址上執行10次搜索。 當然,必須輸入的次數可能仍然是秘密,因此它更加安全。

我想另一種解決方案是添加一個黑名單,以從顯示中刪除“ poo poo”之類的詞。

我的問題是 ,是否有更好的方法做到這一點?還是我沿着正確的方向前進? 我想編寫允許擴展的代碼。

謝謝

您走在正確的軌道上。

我會做什么:

  1. 您可以唯一地存儲每個查詢。 添加一個表來跟蹤該搜索詞的每個IP,並且每個IP僅更新一次您的計數
  2. 如果某個新的/唯一的關鍵字在X天內的更新次數超過X次,請讓系統向您/您的管理員發送郵件,以便您有機會手動將其列入黑名單。 這必須是手動的,因為某些熱門話題也可能顯示此行為。
  3. 這是最有趣的一個:查詢完成后,檢查結果量。 建議沒有結果的關鍵字是毫無意義的。 因此,僅建議至少提供X數量結果的查詢。 “ poo poo”之類的查詢不會給出任何結果,因此它們不會顯示在您的建議列表中。

我希望這有幫助。 如果您有任何疑問,請通過聊天與我進一步交談:)

例如,您可以添加一個新的布爾列(稱為validate),並避免使用黑名單。 如果validate為false,則不會出現在推薦列表中

管理員可以通過查詢或后台工具手動調整此字段。 您可以添加另一列稱為audit的列,該列存儲查詢的時間戳。 如果最大時間戳和最小時間戳之間的差異超過一個值,則默認情況下validate字段可能為false。

此解決方案可輕松快速地發展您的想法。

祝您好運。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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