Skip to content

[Algolia] 使用 removeWordsIfNoResults / optionalKeywords 放寬搜尋條件

Published: at 10:22 AM (3 min read)

你有過在搜尋條件較複雜時,導致沒有任何搜尋結果,這時候我們可以如何調整 Algolia 設定放寬搜尋條件呢?

例如:

當我們使用 Algolia 想搜尋一位 “全端工程師” 時,我們可能會下以下關鍵字

  1. tailwind
  2. react
  3. ror
  4. postgresql
  5. redis

但是這樣的搜尋條件在預設要全部符合的情況下,很可能會導致沒有任何搜尋結果。

Algolia can't find any result

  1. removeWordsIfNoResults
    當搜尋條件沒有任何結果時,根據設定的規則,自動將關鍵字設為 optional 來嘗試找到結果。

    • none: 不做任何處理 (預設)
    • lastWords: 持續將最後一個關鍵字設定為 optional,最多 5 個關鍵字,直到找到結果
    • firstWords: 持續將第一個關鍵字設定為 optional,最多 5 個關鍵字,直到找到結果
    • allOptional: 將所有關鍵字設定為 optional,等於將所有關鍵字改為 OR 條件
    index
      .search("query", {
        removeWordsIfNoResults: "lastWords",
        // removeWordsIfNoResults: 'none'
        // removeWordsIfNoResults: 'firstWords'
        // removeWordsIfNoResults: 'allOptional'
      })
      .then(({ hits }) => {
        console.log(hits);
      });
    
  2. optionalWords
    指定哪些關鍵字為 optional,藉此放寬搜尋條件。

index
  .search("query", {
    optionalWords: ["ror", "postgresql"],
  })
  .then(({ hits }) => {
    console.log(hits);
  });

差異

兩個設定當然都會將符合最多關鍵字的結果排在最前面,但是差異在於:


Previous Post
[PostgreSQL] 如何更新 PostgreSQL 中的 auto increment 欄位值
Next Post
[leetcode] 4. Median of Two Sorted Arrays