套用篩選與排序

已完成

此動作對搜尋解決方案很常見,通常是使用者想要依欄位值,用篩選及排序來精簡查詢結果。 Azure AI 搜尋服務透過搜尋查詢 API 支援這兩項功能。

篩選結果

您可用兩種方式對查詢套用篩選:

  • 簡式搜尋運算式中,內含篩選準則。
  • 完整語法搜尋運算式,提供 OData 篩選運算式作為 $filter 參數。

您可以對索引中任何可篩選的欄位,套用篩選。

例如,假設您想要尋找包含倫敦一字的文件,且其作者欄位的值為審稿者

您可提交下列簡式搜尋運算式,來達成此結果:

search=London+author='Reviewer'
queryType=Simple

或是可以在 $filter 參數中,搭配完整的 Lucene 搜尋運算式一起,使用 OData 篩選,如下所示:

search=London
$filter=author eq 'Reviewer'
queryType=Full

提示

OData $filter 運算式會區分大小寫!

使用 Facet 進行篩選

Facet 是向使用者呈現篩選準則 (依據結果集中欄位值) 的實用方式。 對於像是欄位有少量的離散值,可在使用者介面中顯示為連結或選項時,這種方式的效果最佳。

若要使用 Facet,您必須指定在初始查詢中要擷取可能值的可 Facet 欄位。 例如,您可以使用下列參數,傳回作者欄位的所有可能值:

search=*
facet=author

此查詢的結果包含可在使用者介面中顯示的離散 Facet 值集合,以供使用者選取。 然後可以在後續的查詢中,使用所選的 Facet 值來篩選結果:

search=*
$filter=author eq 'selected-facet-value-here'

排序結果

根據預設,會依據查詢處理序所指派的相關性分數來排序結果,會先列出評分最高的相符項目。 但您可藉由包含指定一或多個可排序欄位及排序次序 (ascdesc) 的 OData orderby 參數,覆寫此排序順序。

例如,若要排序結果,最近修改過的文件列在最前面,可以使用下列參數值:

search=*
$orderby=last_modified desc

注意

如需使用篩選的詳細資訊,請參閱 Azure AI 搜尋服務中的篩選。 如需使用結果的相關資訊 (包括排序及點擊醒目提示),請參閱如何在 Azure AI 搜尋服務中使用搜尋結果