共用方式為


在 Azure AI 搜尋中新增同義字

在搜尋服務上,同義字對應會關聯對等字詞,並擴展查詢範圍,無需使用者實際提供該字詞。 例如,假設狗、犬類和是對應的同義字,即包含的檔上的犬類相符查詢。 如果您的內容包含技術行話、俚語或晦澀的術語,則可以為不同語言 (例如英文版和法文版) 或語彙建立多個同義字對應。

以下是有關同義字對應的一些重點:

  • 同義字對應是最上層資源,建立一次後即可供許多索引使用。
  • 同義字對應會套用至字串欄位。
  • 您可以隨時建立並指派同義字對應,無需中斷編製索引或查詢。
  • 您的服務層級會設定您可以建立的同義字對應數量上限。
  • 搜尋服務可以有多個同義字對應,但在索引內,欄位定義只能有一個同義字對應指派。

建立同義字對應

同義字對應是由名稱、格式和規則所組成,上述項目可作為同義字對應輸入。 唯一支援的格式是 solr,而 solr 格式會決定規則建構。

若要建立同義字對應,請以程式設計方式執行。 入口網站不支援同義字對應定義。

使用建立同義字對應 (REST API) 來建立同義字對應。

POST /synonymmaps?api-version=2024-07-01
{
    "name": "geo-synonyms",
    "format": "solr",
    "synonyms": "
        USA, United States, United States of America\n
        Washington, Wash., WA => WA\n"
}

定義規則

對應規則遵守Apache Solr的開放原始碼同義字篩選規格,如本檔所述: SynonymGraphFiltersolr 格式支援兩種規則:

  • 對等性 (查詢中的詞彙相等且可替代)

  • 明確對應 (其中的字詞已對應至一個明確字詞)

每個規則均使用新行字元 (\n) 分隔。 在免費服務中,每個同義字對應最多可以定義 5,000 條規則,而其他階層的每個對應則最多可以定義 20,000 條規則。 每個規則最多可以有 20 個擴充,或規則中的專案。 如需詳細資訊,請參閱同義字限制

查詢剖析器會將任何大寫或混合大小寫的字詞轉換成小寫。 若要在字串中保留特殊字元,例如逗號或虛線,請在建立同義字對應時新增適當的逸出字元。

對等性規則

對等詞彙的規則會在相同的規則內以逗號分隔。 在第一個範例中,美國查詢會擴充至美國「美國」「美國 美國」請注意,如果您想要比對詞組,查詢本身必須是引弧括住的片語查詢。

在等價的情況下,狗的查詢會展開查詢,以包含小狗犬。

{
"format": "solr",
"synonyms": "
    USA, United States, United States of America\n
    dog, puppy, canine\n
    coffee, latte, cup of joe, java\n"
}

明確對應

明確對應的規則會以箭號 => 表示。 當指定時,與 => 左側相符的搜尋查詢字詞序列,會由查詢時右側的替代字詞所取代。

在明確的情況下,會將 WashingtonWash WA 的查詢重寫為 WA,而查詢引擎只會在 WA 一詞上尋找相符專案。 明確對應僅適用於指定的方向,在此案例中不會將查詢 WA 重寫至 Washington

{
"format": "solr",
"synonyms": "
    Washington, Wash., WA => WA\n
    California, Calif., CA => CA\n"
}

逸出特殊字元

系統會在查詢處理期間分析同義字,就像其他查詢字詞一樣,這表示保留字元和特殊字元的規則會套用至同義字對應中的字詞。 需要逸出的字元清單會因簡單語法和完整語法而異:

若要保留預設分析器捨棄的字元,請替換保留這些字元的分析器。 選項包括 Microsoft 自然語言分析器 (其會保留有連字號的字組),或可處理更複雜模式的自訂分析器。 如需詳細資訊,請參閱部分字詞、模式和特殊字元

下列範例示範如何使用反斜線逸出字元:

{
    "format": "solr",
    "synonyms": "WA\, USA, WA, Washington\n"
}

由於反斜線本身是 JSON 和 C# 等其他語言的特殊字元,因此您可能需要逸出兩次。 以下是使用 JSON 的範例:

{
    "format":"solr",
    "synonyms": "WA\\, USA, WA, Washington"
}

管理同義字對應

您可以在不中斷查詢和編製索引工作負載的情況下,更新同義字對應。 不過,當您將同義字對應新增至欄位之後,如果您刪除同義字對應,任何包含有問題的字段的查詢就會失敗,並出現 404 錯誤。

建立、更新和刪除同義字對應,一律是整份文件作業。 您無法以累加方式更新或刪除部分的同義字對應。 即便只是更新一個規則也需要重新載入。

將同義字指派給欄位

建立同義字對應之後,請將它指派給索引中的欄位。 若要指派同義字對應,請以程式設計方式執行。 入口網站不支援同義字對應欄位關聯。

  • 欄位的類型必須是 Edm.StringCollection(Edm.String)
  • 欄位必須具有 "searchable":true
  • 欄位只能有一個同義字對應

如果同義字對應存在於搜尋服務中,則會在下一個查詢中使用,無需重新編製索引或重建。

使用建立或更新索引 (REST API) 來修改欄位定義。

PUT /indexes?api-version=2024-07-01
{
    "name":"hotels-sample-index",
    "fields":[
        {
            "name":"description",
            "type":"Edm.String",
            "searchable":true,
            "synonymMaps":[
            "en-synonyms"
            ]
        },
        {
            "name":"description_fr",
            "type":"Edm.String",
            "searchable":true,
            "analyzer":"fr.microsoft",
            "synonymMaps":[
            "fr-synonyms"
            ]
        }
    ]
}

查詢對等或對應的欄位

同義字欄位指派不會變更您撰寫查詢的方式。 在同義字對應指派之後,唯一的差異在於,如果同義字對應中有查詢字詞,搜尋引擎會根據規則來擴充或重寫字詞或片語。

查詢執行期間如何使用同義字

同義字是一種查詢擴充技術,可透過對等詞彙補充索引的內容,但僅適用於具有同義字指派的欄位。 如果欄位範圍查詢排除已啟用同義字的欄位,您就不會看到同義字對應中的相符項目。

針對已啟用同義字的欄位,同義字受限於與相關聯欄位相同的文字分析。 例如,如果系統使用標準 Lucene 分析器來分析欄位,同義字字詞也會在查詢時受限於標準 Lucene 分析器。 如果您想要在同義字字詞中保留標點符號,例如句點或虛線,請在欄位上套用內容保留分析器。

在內部,同義字功能會使用 OR 運算元,以同義字重寫原始查詢。 基於這個原因,點閱數醒目提示與評分檔案,會將原始詞彙與同義字視為對等。

同義字僅適用於自由格式的文字查詢,且不支援篩選、Facet、自動完成或建議。 自動完成和建議僅根據原始字詞提供,同義字比對結果不會出現在回應中。

如果您在開發 (非生產) 環境中有現有的索引,可以使用小型的字典進行試驗,看看增加同義字能如何改變搜尋體驗,包含對於評分檔案、點閱數醒目提示以及搜尋建議的影響。

通配符搜尋

同義字擴充不適用於萬用字元搜尋字詞;也不會擴充前置詞、模糊與 RegEx 字詞。

如果您需要執行適用同義字展開和萬用字元、regex 或模糊搜尋的單一查詢,您可以使用 OR 語法結合查詢。 例如,若要針對簡單查詢語法結合同義字與萬用字元,詞彙可以是 <query> | <query>*

後續步驟