2017-03-07 50 views
1

我在取得Laravel 5.2一個網站,我需要實現一個搜索框,我知道它的基本過程包括(請請願控制器,找到並回答與json等)。提示構建搜索算法Laravel

因此,在此之前,我確實需要知道一些提示,最佳實踐是儘可能以最佳方式實現此目的。簡而言之,我有一個包含大量帖子的數據庫表(真的很多,可以說500k個寄存器),每個帖子都有一些屬性:名稱,描述,海報,標點符號。我知道這個問題沒有一個完全的答案,但我只想知道在做那件事之前我應該​​先做些什麼,我該如何改進搜索以及如何使用最佳做法。

  • 1 .-你認爲我需要創建一個只有names和後id一個單獨的表?此表僅用於搜索。
  • 2.-爲了加快搜索速度,我應該把name列作爲數據庫中的索引嗎?或按日期排序?
  • 3.如何提高搜索速度?也許使用一些puntuation?(根據用戶搜索的帖子的次數 ),這是一個好主意嗎?

  • 4.-我在想,也許我只需要找到帖子的名稱,因爲數據庫中的項目數量。我對嗎?

  • 5.-此外,我可以使用哪些算法來處理某些用戶使用拼寫錯誤編寫的情況?我需要解釋他們試圖說出的內容,並向他們展示相關的帖子。

  • 6.-你推薦哪些工具或擴展相關的我?

最後,非常感謝!

+0

這可能是最好的一個問題不是問很多問題:http://meta.stackexchange.com/questions/39223/one-post-with-multiple-questions-or-multiple-posts – Nanne

回答

2

最好的解決方法是不要使用數據庫作爲搜索引擎。

使用搜索引擎Elasticsearch使您的搜索更快,更智能,然後使用純數據庫搜索。

如果你的應用程序真的很大,如你所說,值得。

有了它,您可以實現高級搜索,使用許多可用的分析器,如nGram,您可以搜索redn並獲得Sredny M Casanova的結果。或者甚至在用戶輸入錯字時找到。

3

是的,查看Laravel Scout with Algolia;但你需要更新到Laravel 5.3或5.4。一旦你設置了Scout/Algolia(應該很快),你仍然需要對API進行一次AJAX調用,但是如果做得對,它應該是非常快的。

https://laravel.com/docs/5.4/scout