作者 邓超

调整超迹标签搜索规则

@@ -202,14 +202,51 @@ class HomeEs extends Base { @@ -202,14 +202,51 @@ class HomeEs extends Base {
202 202
203 // 超迹 带标签搜索 203 // 超迹 带标签搜索
204 if(app()->request('search_tags') && $ids){ 204 if(app()->request('search_tags') && $ids){
  205 + // 钉钉 @胡淑芬(胡淑芬) 时间 2026-09-01 17:56 提出修改
205 // 查询id对应的发件人 206 // 查询id对应的发件人
206 - $search_lists = $this->es->search(['query'=>['bool'=>["must"=>[["terms"=>['uuid'=>$ids]]]]],"_source" => ["from.email"]],0,10000); 207 + $search_lists = $this->es->search(['query'=>['bool'=>["must"=>[["terms"=>['uuid'=>$ids]]]]],"_source" => ["from.email",'to','folder_as_int']],0,10000);
207 if(!empty($search_lists['hits']['hits'])){ 208 if(!empty($search_lists['hits']['hits'])){
208 - $query['query']['bool']['must'][] = ['query_string'=>[ 209 + $from_emails = [];
  210 + $to_emails = [];
  211 + foreach($search_lists['hits']['hits'] as $hit){
  212 + $folder_as_int = isset($hit['_source']['folder_as_int'])?(int)$hit['_source']['folder_as_int']:0;
  213 + if(in_array($folder_as_int,[2,3])){
  214 + $tos = explode(',',$hit['_source']['to']);
  215 + foreach($tos as $to){
  216 + if($to){
  217 + $to_emails[] = $to;
  218 + }
  219 + }
  220 + }else{
  221 + if(!empty($hit['_source']['from']['email'])){
  222 + $from_emails[] = $hit['_source']['from']['email'];
  223 + }
  224 + }
  225 + }
  226 + $from_emails = array_unique($from_emails);
  227 + $to_emails = array_unique($to_emails);
  228 + $tag_query = ['bool'=>['should'=>[],'minimum_should_match'=>1]];
  229 + if($from_emails){
  230 + $tag_query['bool']['should'][] = ['query_string'=>[
209 'query'=>'from.email:('.implode(' OR ',array_map(function($e){ 231 'query'=>'from.email:('.implode(' OR ',array_map(function($e){
210 - return '"'.$e['_source']['from']['email'].'"';  
211 - },$search_lists['hits']['hits'])).')'] 232 + return '"'.$e.'"';
  233 + },$from_emails)).')']
212 ]; 234 ];
  235 + }
  236 + if($to_emails){
  237 + $tag_query['bool']['should'][] = ['query_string'=>[
  238 + 'query'=>'to:('.implode(' OR ',array_map(function($e){
  239 + return '"'.$e.'"';
  240 + },$to_emails)).')']
  241 + ];
  242 + }
  243 + if(empty($tag_query['bool']['should'])){
  244 + $query['query']['bool']['must'][] = ['term'=>[
  245 + 'uuid'=> 0
  246 + ]];
  247 + }else{
  248 + $query['query']['bool']['must'][] = $tag_query;
  249 + }
213 }else{ 250 }else{
214 $query['query']['bool']['must'][] = ['term'=>[ 251 $query['query']['bool']['must'][] = ['term'=>[
215 'uuid'=> 0 252 'uuid'=> 0