延續上篇的介紹,我們已經將 Algolia 結合至我們的 Laravel 專案中,並且成功地建立了基本的搜尋索引
。這篇我們將深入探討 Algolia 的一些進階設定。
在不同的應用情境下,建立適當的索引是非常重要的。
假設如果你想要製作一個全站搜尋,可以試著使用 Aggregator 去針對多組資料集去整合搜尋的索引與情境。
use Algolia\ScoutExtended\Searchable\Aggregator;
class LatestAggregator extends Aggregator
{
protected $models = [
\App\Channel::class,
\App\Episode::class,
];
public function shouldBeSearchable()
{
return $this->model->isPublished();
}
}
用法也跟一般查詢一樣,用法不變。
$models = App\Search\Latest::search('Iphone 15')->get();
也記得要把被設定的 model 自動更新索引關閉,避免於 model 與 Aggregator 兩邊同時針對索引重複更新
Laravel\Scout\ModelObserver::disableSyncingFor(Channel::class);
Laravel\Scout\ModelObserver::disableSyncingFor(Episode::class);
Algolia 提供了許多可以客製化的選項,讓你可以根據需求調整搜尋行為。以下是幾個常見的情境:
Algolia 提供了自訂排序與排名的規則與設定公式。例如,你可以根據日期、熱門程度或其他自定義的欄位資料對搜尋結果進行排序,或者使用內容相關性的參數去排序。
如果你會希望使用者可以更輕易搜尋到有多種詞彙關聯到同一個情境,或是有別名的情況時,你可以在 Algolia 的 UI 上去調整設定。
目前有四種的方式可以調整,但是大多數情況可以使用 Regular synonyms
去設定就可以滿足基本的需求。
李白
, 太白
, 青蓮居士
, 謫仙人
, 詩仙
等等設定為同義詞,這樣之後搜尋會將前面的詞視為同一個,並且搜尋跟前面設定有關係的結果出來,Regular synonyms
但是會依照設定的方式會有方向性的特性,就不會如 Regular synonyms
是雙向的同義詞Macbook pro <size>
其實 Algolia 還提供了更多的微調選項,像是我覺得蠻有趣的是 Typo tolerance
,可以讓我們提供更接近 Google search 的使用體驗。但當然這些部分很多都要深入的研究跟微調,細節部分在 Algolia 的官方文件都有 step by step 的教學可以研究看看。
下篇文章,我們將進一步探討如何使用 Algolia 的推薦系統來,快速建構出常見的內容推薦機制。你不需要理解複雜的推薦系統的建置與架構,也可以享受到情境簡單的推薦系統。