固定評分查詢
固定評分查詢(ConstScoreQuery)將子查詢封裝為過濾條件,所有命中的文檔統一返回固定的相關性分數(1.0),不再根據 BM25 等演算法計算相關性評分。
介面
固定評分查詢的介面為 Search 或 ParallelScan,Query 類型為 ConstScoreQuery。
參數
參數 | 說明 |
filter | 內部子查詢條件,支援任意一種 Query 類型(如 MatchQuery、TermQuery、BoolQuery 等)。ConstScoreQuery 僅判斷文檔是否命中該子查詢,命中即返回固定分數 1.0,不參與 BM25 相關性評分計算。 |
getTotalCount | 是否返回匹配的總行數,預設為 false,表示不返回。返回匹配的總行數會影響查詢效能。 |
tableName | 資料表名稱。 |
indexName | 多元索引名稱。 |
columnsToGet | 是否返回所有列,包含 returnAll 和 columns 設定。returnAll 預設為 false,表示不返回所有列;當設定 returnAll 為 true 時,表示返回所有列。在 returnAll 為 false 時,可以通過 columns 指定返回的列,未指定時只返回主鍵列。 |
適用情境
業務只關心文檔是否命中而不關心相關度排序時,使用 ConstScoreQuery 可消除因文本長度、詞頻等因素導致的評分差異,將排序權交給後續自訂排序邏輯(如 FieldSort、PrimaryKeySort)。
在 BoolQuery 的 mustQueries 中對部分子句使用 ConstScoreQuery 封裝,可消除這些子句的評分貢獻,僅保留其他子句的相關性分數作為最終排序依據。
查詢條件僅用於過濾而非排序時,使用 ConstScoreQuery 可減少不必要的評分計算開銷。
與 BoolQuery filterQueries 的區別
對比項 | BoolQuery filterQueries | ConstScoreQuery |
評分貢獻 | 不貢獻任何分數 | 貢獻固定分數 1.0 |
使用位置 | 只能作為 BoolQuery 的 filterQueries 子句 | 可獨立使用,也可放在 BoolQuery 的 mustQueries 或 shouldQueries 中 |
典型用途 | 純過濾,不影響排序 | 需要佔位評分(如與其他帶評分 query 組合時統一基準分) |
使用方式
Tablestore 多元索引同時提供 Java SDK 和 Go SDK 實現固定評分查詢。