我的搜索结果如下:
{
"root": {
"id": "toplevel",
"relevance": 1,
"fields": {
"totalCount": 20
},
"coverage": {
"coverage": 100,
"documents": 20,
"full": true,
"nodes": 1,
"results": 1,
"resultsFull": 1
},
"children": [{
"id": "group:string:Jones",
"relevance": 9870,
"value": "Jones",
"fields": {
"sum(price)": 39816
}
},
{
"id": "group:string:Brown",
"relevance": 8000,
"value": "Brown",
"fields": {
"sum(price)": 20537
}
}
]
}
}
我不想在搜索结果中显示字段和覆盖范围。我该如何实现?我也想根据错误和错误消息更改状态。我怎样才能做到这一点?请帮忙。
答案 0 :(得分:3)
响应有效载荷:您可以创建自己的渲染器来控制返回的格式:https://docs.vespa.ai/documentation/result-rendering.html
HTTP状态代码:确定要返回的状态代码的规则是:
如果结果中没有错误(Result.hits()。getError()== null):返回200 OK。
如果结果包含错误并且没有常规命中:如果结果中任何ErrorMessage的错误代码(Result.hits()。getErrorHit()。errorIterator())是“ Web服务错误代码”,其中第一个返回。否则,如果它是“ HTTP兼容错误代码”,则返回其映射。否则,将返回500 INTERNAL_SERVER_ERROR。
如果结果包含错误并且还包含有效命中:与上面相同,但是默认情况下返回200 OK而不是500。
Web服务错误代码:
200, 301, 302, 307, 400, 401, 403, 404, 405, 406, 408, 428, 429, 431, 500, 501, 502, 511
HTTP兼容错误代码:
com.yahoo.container.protect.Error.BAD_REQUEST -> Http code 400
com.yahoo.container.protect.Error.UNAUTHORIZED -> Http code 401
com.yahoo.container.protect.Error.FORBIDDEN -> Http code 403
com.yahoo.container.protect.Error.NOT_FOUND -> Http code 404
com.yahoo.container.protect.Error.INTERNAL_SERVER_ERROR -> Http code 500
com.yahoo.container.protect.Error.INSUFFICIENT_STORAGE -> Http code 507
使用此信息,您可以编写一个Searcher组件(https://docs.vespa.ai/documentation/searcher-development.html),该组件在Result中设置与您想要的HTTP状态相对应的ErrorMessage。
有关真实示例,请参见例如Vespa中捆绑的限速搜索器:https://github.com/vespa-engine/vespa/blob/master/container-search/src/main/java/com/yahoo/search/searchers/RateLimitingSearcher.java#L133
答案 1 :(得分:1)
要自定义结果,可以使用结果渲染器。请查看https://docs.vespa.ai/documentation/result-rendering.html,其中应附带示例。