[英]Creating a smart predictive search for website
我正在嘗試為我正在制作的網站編寫一個預測性搜索系統。
完成的功能將非常像這樣:
我不確定執行此操作的最佳方法,但是到目前為止,這是我所擁有的:
搜索表:
id-期限-計數
每次進行搜索時,都會將其插入到搜索表中。
當用戶在搜索輸入中輸入字符時,將發生以下情況:
SELECT * FROM searches WHERE term LIKE 'x%' AND count >= 10 ORDER BY count DESC LIMIT 10
(x =搜索輸入中的文本) 該解決方案遠非完美。 如果任何隨機人搜索相同的術語10次,它將顯示為推薦搜索(如果有人要搜索以相同字符開頭的術語)。 我的意思是,如果有人搜索“ poo poo” 10次,然后該網站上有人搜索“ po”以尋找土豆,那么他們就會將“ poo poo”視為熱門搜索。 這不酷 。
我想出了一些解決此問題的想法。 例如,我可以將搜索表中的每個插入查詢限制為用戶的IP地址。 但是,這不能完全解決問題,如果用戶具有動態IP地址,則可以重新啟動調制解調器並在每個IP地址上執行10次搜索。 當然,必須輸入的次數可能仍然是秘密,因此它更加安全。
我想另一種解決方案是添加一個黑名單,以從顯示中刪除“ poo poo”之類的詞。
我的問題是 ,是否有更好的方法做到這一點?還是我沿着正確的方向前進? 我想編寫允許擴展的代碼。
謝謝
您走在正確的軌道上。
我會做什么:
我希望這有幫助。 如果您有任何疑問,請通過聊天與我進一步交談:)
例如,您可以添加一個新的布爾列(稱為validate),並避免使用黑名單。 如果validate為false,則不會出現在推薦列表中
管理員可以通過查詢或后台工具手動調整此字段。 您可以添加另一列稱為audit的列,該列存儲查詢的時間戳。 如果最大時間戳和最小時間戳之間的差異超過一個值,則默認情況下validate字段可能為false。
此解決方案可輕松快速地發展您的想法。
祝您好運。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.