搜索自定义召回
更新时间:2024-11-25
配置说明
自定义搜索召回可以配置过滤条件,检索条件,及排序条件三个字段,分别按照如下规则配置,搜索自定义召回按照如下格式配置,不属于配置关键字的部分将被忽略。
{
"query": {
"bool": {
"filter": [{}],
"should": []
}
},
"sort": {}
}
过滤条件
配置在 query/bool/filter下,使用list类型,具体可参考过滤搜索结果
如希望只召回cities字段为上海的物料,可按如下方式配置。
{
"query": {
"bool": {
"filter": [
// 需要配置的自定义过滤条件
{
"bool": {
"must": [
{
"term": {
"cities": "上海"
}
}
]
}
}
]
}
}
}
配置的过滤条件会和原本的过滤条件共同生效,因此一般不建议配置过滤条件,因为可以通过接口传入过滤条件对所有召回进行过滤,除非希望自定义召回有特定的过滤条件才需要配置。
基于es存储存储字段类型区别,字段名需要加 ".keyword" 后缀,对字段名配置有疑问的可以询问研发人员。
查询条件
配置在 query/bool 下, 具体可参考使用查询规则搜索
如一个 match_phrase 召回,可以使用如下召回语句,其中需要用 "@query" 来标记原始query,该query是对原始的搜索query进行纠错(若启用)后的结果,但不会受到其他搜索配置如同义词,搜索意图理解和词权重的影响。
{
"query": {
"bool": {
"should": {
"bool": {
"must": [
{
"match_phrase": {
"title": {
"query": "@query"
}
}
}
]
}
}
}
}
}
预置检索函数
仅供开发使用,直接使用关键词召回如 全覆盖检索 full_cover_query, 精简检索 reduced_query,核心词检索 kernel_word_query 的搜索语句, 只能配置其中一个,这样配置可以使用全部关键词召回相关的搜索配置,包括纠错,分词,同义词,词权重,紧密度等。
{
"query": {
"bool": {
"should": "@full_cover_query"
}
}
}
排序条件
配置在 sort 下,无特殊要求,参考 排序搜索结果
{
"sort": [
{
"publish_time": {
"order": "desc"
}
}
]
}
如希望按照发布时间排序,可以按照如下配置。 需要注意,这只会影响一路召回的排序结果,最终还会和其他召回进行合并排序,因此最终结果并不会按照发布时间排序,但是可以一定程度上增加搜索结果中新物料的比例。