顯示和可搜尋屬性
預設情況下,每當將文件新增至 Meilisearch 時,其中找到的所有新屬性都會自動新增至兩個清單
displayedAttributes
:屬性欄位顯示在文件中的屬性searchableAttributes
:搜尋其值以比對查詢字詞的屬性
預設情況下,文件中的每個欄位都是顯示和可搜尋的。這些屬性可以在設定中修改。
顯示的欄位
其屬性新增至displayedAttributes
清單的欄位會顯示在每個比對的文件中。
搜尋時傳回的文件僅包含顯示的欄位。如果欄位屬性不在顯示屬性清單中,則該欄位不會新增至傳回的文件中。
預設情況下,所有欄位屬性都設定為顯示.
範例
假設您管理一個包含電影資訊的資料庫。透過新增以下設定,搜尋後回傳的文件將包含 title
、overview
、release_date
和 genres
等欄位。
curl \
-X PUT 'https://127.0.0.1:7700/indexes/movies/settings/displayed-attributes' \
-H 'Content-Type: application/json' \
--data-binary '[
"title",
"overview",
"genres",
"release_date"
]'
可搜尋欄位
欄位可以是可搜尋或不可搜尋的。
當您執行搜尋時,所有可搜尋的欄位都會被檢查是否與查詢詞彙匹配,並用於評估文件的相關性,而不可搜尋的欄位則完全被忽略。預設情況下,所有欄位都是可搜尋的。
不可搜尋的欄位最適合用於與搜尋體驗無關的內部資訊,例如 URL、銷售數字,或僅用於排序結果的評分。
提示
即使您將某個欄位設為不可搜尋,它仍然會儲存在資料庫中,並且可以在稍後再次設為可搜尋。
searchableAttributes
清單
Meilisearch 使用一個有序的清單來決定哪些屬性是可搜尋的。屬性在這個清單中出現的順序也決定了它們對相關性的影響,從影響最大到最小。
換句話說,searchableAttributes
清單有兩個用途
- 它指定了哪些欄位是可搜尋的
- 它決定了屬性排序順序
searchableAttributes
清單有兩種可能的模式。
預設:自動
預設情況下,所有屬性都會按照它們出現的順序自動新增到 searchableAttributes
清單中。 這表示初始順序將基於第一個索引文件中屬性的順序,而後續文件中找到的每個新屬性都會加到此清單的末尾。
這個預設行為由 searchableAttributes
的值 ["*"]
表示。要驗證您的 searchableAttributes
清單的目前值,請使用取得可搜尋屬性端點。
如果您想將可搜尋屬性清單還原為此預設行為,請將 searchableAttributes
設定為空陣列 []
或使用重設可搜尋屬性端點。
手動
您可能想要將某些屬性設定為不可搜尋,或在文件被索引後更改屬性排序順序。為此,請將屬性按照期望的順序放置,並使用更新可搜尋屬性端點傳送更新後的清單。
在手動更新 searchableAttributes
清單之後,除非設定被重設,否則後續新增的屬性將不再自動新增。
警告
由於實作上的錯誤,手動更新 searchableAttributes
將會改變 JSON 回應中顯示的文件欄位順序。此行為不一致,將在未來的版本中修正。
範例
假設您管理一個具有以下欄位的電影資料庫:id
、overview
、genres
、title
、release_date
。這些欄位都包含有用的資訊。然而,有些欄位比其他欄位更適合用於搜尋。為了使 id
和 release_date
欄位不可搜尋,並按重要性重新排序剩餘的欄位,您可以透過以下方式更新可搜尋屬性清單。
curl \
-X PUT 'https://127.0.0.1:7700/indexes/movies/settings/searchable-attributes' \
-H 'Content-Type: application/json' \
--data-binary '[
"title",
"overview",
"genres"
]'
在搜尋時自訂要搜尋的屬性
預設情況下,所有查詢都會搜尋 searchableAttributes
清單中的所有屬性。使用attributesToSearchOn
搜尋參數將特定查詢限制在索引的 searchableAttributes
的子集內。
資料儲存
所有欄位都儲存在資料庫中。此行為無法變更。
因此,即使某個欄位同時不在 displayedAttributes
清單和 searchableAttributes
清單中,它仍然會儲存在資料庫中,並且可以隨時新增到任一個或兩個清單中。