同義詞

    如果您的資料集中有多個詞具有相同的含義,您可以建立一個同義詞列表。這將使您的搜尋結果更相關。

    設定為同義詞的詞不一定總是返回相同的結果。在預設設定下,movies 資料集對於 great 應該返回 547 個結果,對於 fantastic 應該返回 66 個結果。讓我們將它們設定為同義詞

    curl \
      -X PUT 'https://127.0.0.1:7700/indexes/movies/settings/synonyms' \
      -H 'Content-Type: application/json' \
      --data-binary '{
        "great": ["fantastic"], "fantastic": ["great"]
      }'

    使用新的設定,搜尋 great 返回 595 個結果,而 fantastic 返回 423 個結果。這是由於各種因素造成的,例如錯字分割查詢以找到相關的文件。搜尋 great 將只允許一個錯字 (例如,create),並考慮到 great 的所有變體 (例如,greatest) 以及 fantastic

    警告

    搜尋結果的數量可能會因 movies 資料集的變更而有所不同。

    標準化

    在索引過程中,所有同義詞都會被轉換為小寫去除 Unicode 編碼

    範例

    考慮 RésuméCV 設定為同義詞的情況。

    {
      "Résumé": [
        "CV"
      ],
      "CV": [
        "Résumé"
      ]
    }
    

    搜尋 cv 會返回任何包含 cvCV 的文件,此外還會返回任何包含 Résuméresuméresume 等的文件,不受大小寫或重音符號的影響。

    單向關聯

    當您希望一個詞與另一個詞同義,但反之則不然時,請使用此功能。

    phone => iphone
    

    搜尋 phone 將返回包含 iphone 的文件,如同它們包含 phone 這個詞一樣。

    但是,如果您搜尋 iphone,由於錯字規則,包含 phone 的文件在結果中的排名會較低。

    範例

    若要建立單向同義詞列表,這是應該加入設定的 JSON 語法。

    {
      "phone": [
        "iphone"
      ]
    }
    

    相關性

    精確的搜尋查詢永遠優先於其同義詞。 exactness 排名規則在排名搜尋結果時,會優先考慮精確的字詞而非同義詞。

    以下列搜尋結果集為例:

    [
      {
        "id": 0,
        "title": "Ghouls 'n Ghosts"
      },
      {
        "id": 1,
        "title": "Phoenix Wright: Spirit of Justice"
      }
    ]
    

    如果您將 ghost 設定為 spirit 的同義詞,搜尋 spirit 的查詢將會先返回文件 1,再返回文件 0

    雙向關聯

    透過將一個或多個同義詞彼此關聯,它們將在雙向都被視為相同。

    shoe <=> boot <=> slipper <=> sneakers
    

    當使用這些字詞之一進行搜尋時,所有同義詞都會被視為相同的字詞,並會出現在搜尋結果中。

    範例

    若要在四個字詞之間建立雙向關聯,這是應該加入設定的 JSON 語法。

    {
      "shoe": [
        "boot",
        "slipper",
        "sneakers"
      ],
      "boot": [
        "shoe",
        "slipper",
        "sneakers"
      ],
      "slipper": [
        "shoe",
        "boot",
        "sneakers"
      ],
      "sneakers": [
        "shoe",
        "boot",
        "slipper"
      ]
    }
    

    多字詞同義詞

    Meilisearch 將多字詞同義詞視為詞組

    範例

    假設您將 San FranciscoSF 設定為具有雙向關聯的同義詞

    {
      "san francisco": [
        "sf"
      ],
      "sf": [
        "san francisco"
      ]
    }
    

    如果您輸入 SF 作為搜尋查詢,Meilisearch 也會返回包含 San Francisco 詞組的結果。然而,根據排名規則,它們可能被認為比包含 SF 的結果相關性較低。反之亦然:如果您的查詢是 San Francisco,則包含 San Francisco 的文件排名可能會高於包含 SF 的文件。

    每個詞彙的最大同義詞數量

    單一詞彙最多可有 50 個同義詞。Meilisearch 會自動忽略超出此限制的任何同義詞。例如,如果您為 book 設定 51 個同義詞,Meilisearch 將只會返回包含該詞彙本身和前 50 個同義詞的結果。

    如果某個詞彙的任何同義詞包含多個字詞,則該詞彙所有同義詞的字詞總數不能超過 100 個字詞。Meilisearch 會自動忽略超出此限制的任何同義詞。例如,如果您在應用程式中為 computer 設定 40 個同義詞,這些同義詞加總必須少於 100 個字詞。