0
我遇到以下問題: 我想創建一個即時搜索,在用戶開始輸入時立即通過AJAX獲得結果。我不想爲每個'keyup'在六個表內執行額外的數據庫查詢,而是想要加載所有數據庫記錄並在我看來提供它們。 這樣我只需要搜索我的收藏品是否包含搜索詞並將其作爲結果返回。 我知道我可以用where()
-方法縮小範圍,例如,Laravel:按搜索項篩選蒐集結果
$words = $words->where('lemma', 'mysearchterm'); return $words;
的問題是,我不想要檢索精確匹配,但在標準的SQL查詢(SELECT * FROM nouns WHERE lemma LIKE %$mysearchterm%
)使用通配符等。
我該怎麼做? 我一直在嘗試兩個小時。 這是否有意義?或者,一旦用戶開始輸入,每次查詢數據庫都沒有性能優勢?有一個更好的方法嗎?
在此先感謝!
你問在查詢中如何使用'like'? ('lemma','like','%'。$ mysearchterm。'%');'?你也可以看看[Laravel Scout](https://laravel.com/docs/5.4/scout)這是一個全文搜索引擎。不需要模式匹配。它確實使用[Algolia](https://www.algolia.com/),這是免費的,但非常合理。 – Ohgodwhy
我是wirth @Ohgodwhy在這裏。你可能會想看看Scout。如果您不想使用Algolia並堅持使用本地數據庫,您可以輕鬆將其與[偵察兵TNT搜索驅動程序](https://github.com/teamtnt/laravel-scout-tntsearch-driver)配對。 –