OpsRequest represents a query request in the CAVA scoring framework. Use it to read custom key-value parameters that your application passes through the kvpairs clause at query time.
Method summary
| Method | Return type | Description |
|---|---|---|
getKVPairs() | OpsKvPairs | Returns all custom key-value pairs from the kvpairs clause |
How it works
When a query includes a kvpairs clause, the CAVA framework makes those parameters available through OpsRequest. Your scorer retrieves an OpsRequest instance from OpsScorerInitParams, then calls getKVPairs() to get an OpsKvPairs object. From there, use type-specific getters to read individual parameter values.
For the full OpsKvPairs API, see OpsKvPairs.
Usage notes
Read query parameters in `init()`, not in `score()`.
The score() method runs once for every matched document. Reading query parameters inside score() repeats the same lookup on every call and significantly increases scoring cost. Read them once in init() and store the values as instance fields.
Example
The following example reads a custom flag parameter from the kvpairs clause during scorer initialization, then uses its value in the scoring logic.
package users.scorer;
import com.aliyun.opensearch.cava.framework.OpsScoreParams;
import com.aliyun.opensearch.cava.framework.OpsScorerInitParams;
import com.aliyun.opensearch.cava.framework.OpsRequest;
import com.aliyun.opensearch.cava.framework.OpsKvPairs;
class BasicSimilarityScorer {
long flag;
boolean init(OpsScorerInitParams params) {
OpsRequest request = params.getRequest();
OpsKvPairs kvparis = request.getKVPairs();
flag = kvpairs.getLong("flag"); // Obtain the value of the custom parameter whose key is flag from the kvpairs clause, and convert the value to a LONG value.
return true;
}
double score(OpsScoreParams params) {
if (flag == 1) {
//do something
}
return 0.0;
}
}getKVPairs()is the only method onOpsRequest. The class does not expose other query properties.