Q:有两个人掉到陷阱里了,死的人叫死人,活人叫什么?

请教一下,搜索关键字分词后,只有其中一个分词参与了字段打分,但是该字段中包含了多个分词的,怎么处理能让多个分词都参与该字段的打分?

Elasticsearch | 作者 XZ | 发布于2019年09月21日 | 阅读数:1179

案例:ES中字段"productName":"时尚版nike运动鞋",搜索关键字为:nike运动鞋,分词后为:NIKE,运动鞋
查看结果打分时,只有其中一个分词NIKE参与了字段productName的匹配打分
 
使用分词器:ik_syn_smart
 
我这里使用的是“query_string”查询,指定了多个字段,
“query_string”: {
         "query": "nike运动鞋",
         "fields": [
              "productName^2.0",
              "productBrandName^2.0",
              "searchKeywords^3.0"
          ],
          "use_dis_max": false,
          "tie_breaker": 0.0,
           "default_operator": "or",
           "analyzer": "ik_syn_smart",
           "auto_generate_phrase_queries": false,
           "max_determinized_states": 10000,
           "enable_position_increments": true,
           "fuzziness": "AUTO",
           "fuzzy_prefix_length": 0,
           "fuzzy_max_expansions": 50,
           "phrase_slop": 0,
           "escape": false,
           "split_on_whitespace": true,
           "boost": 1.0
   }
 
搜索关键字分词后为:NIKE,运动鞋
productName分词后为:时尚版,NIKE,运动鞋
 
评分时应该是NIKE和运动鞋都参与评分,可实际上只有NIKE参与了评分,怎么处理???
已邀请:

core_wzw - 某AILab搜索技术负责人

赞同来自:

你没贴explain,就默认真的只有一个term产生分数来分析吧。
query_string默认是把多field当_all查,所以_all分词后是否还有“运动鞋”你得确认下。
但是,为什么不用“multi_match”试试?我从来不用query_string。
 

要回复问题请先登录注册