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