機構通常會擁有不重複的術語,或可透過多種方式提及某個概念或事物。您應該定義同義詞,藉此建立字詞的對等性,協助使用者在搜尋時找到項目。
同義詞的定義是透過 _dictionaryEntry
知名結構定義為項目建立索引。
_dictionaryEntry
類型的項目可具有下列屬性:
屬性 | 類型 | 說明 | 必填與否 |
---|---|---|---|
_term |
string | 要定義的字詞。建議值是不含標點符號的無連字號字詞或詞組。 | 必要 |
_synonym |
string (repeated) | 與 _term 中定義的字串相符的查詢,要納入的其他字詞。 |
必要 |
_onlyApplicableForAttachedSearchApplications |
boolean | 可讓您依資料來源和搜尋應用程式將同義詞分組。詳情請參閱「定義資料來源專屬同義詞」。 | 選用 |
使用者在查詢中加入 _term
屬性的值時,「有效」的查詢會變成「字詞 OR 同義詞」。舉例來說,如果 "scifi" 字詞定義採用 "science fiction" 同義詞,則含有 "scifi" 字詞的查詢會與包含 "scifi" 或 "science fiction." 的項目相符
同義詞不會雙向套用。如果該查詢是針對 "science fiction," Cloud Search 執行,則不會對該查詢套用任何同義詞。查詢只會比對包含 "science fiction." 項目 (包含 "scifi") 的項目。
如要讓所有字詞皆可互換,請分別定義每個字詞:
字詞 | 同義詞 |
---|---|
scifi | science fiction |
science fiction | scifi |
在查詢處理期間,系統會先移除連字號和其他標點符號,再套用同義詞。使用者查詢 "sci-fi" 與 _term
"sci fi." 相符 "sci fi."
如要建立使用者可能會加上連字號的字詞同義詞,請先將 _term
正規化,使用空白字元而不是連字號。
延續本例,下列定義比對使用者查詢內容,將 "sci-fi," "sci fi," "scifi," 和 "science fiction" 視為可互換:
字詞 | 同義詞 |
---|---|
scifi | science fiction, sci fi |
sci fi | science fiction, scifi |
science fiction | scifi, sci fi |
根據預設,任何資料來源的同義詞都會套用在整個網域。 具體來說,無論資料來源為何,同義詞都會套用至所有搜尋搜尋應用程式。如果您需要資料來源專屬的同義詞,請參閱定義資料來源專屬同義詞。
使用 Cloud Search SDK 定義全域同義詞
你可以使用 Content Connector SDK 定義字詞和同義詞。如需建構連接器的操作說明,請參閱建立內容連接器。
下列程式碼片段說明如何建構 RepositoryDoc
,根據 CSV 檔案記錄代表字詞和同義詞:
定義同義詞時請注意下列事項:
- 同義詞項目必須對外公開。在上述範例中,將 ACL 設定為
DOMAIN_PUBLIC_ACL
即可完成。 - 請勿為設定檔定義下列屬性,因為這些屬性會覆寫程式碼中的網域公開設定:
defaultAcl.mode=FALLBACK
defaultAcl.public=true
定義搜尋應用程式專屬的同義詞
根據預設,同義詞會套用至所有搜尋應用程式的所有資料來源。
不過,假設貴機構有不同的工程和銷售團隊,而您想為各團隊提供不同的搜尋體驗,包括工作角色專屬的同義詞,在這種情況下,您可以建立一個搜尋應用程式,其中包含工程專屬的資料來源和同義詞,以及另一個包含銷售專屬資料來源和同義詞的搜尋應用程式。要達成這個目標,請使用 _onlyApplicableForAttachedSearchApplications=true
為特定資料來源中的每個同義詞建立索引。這項設定會限制同義詞,使其只會套用至包含特定資料來源的搜尋應用程式。
舉例來說,在上述程式碼範例中新增以下這行程式碼,可確保建立索引的同義詞屬於特定資料來源:
structuredData.put("_onlyApplicableForAttachedSearchApplications", true);