diff --git a/control/weibo.php b/control/weibo.php index 92467e4..d1bdf70 100755 --- a/control/weibo.php +++ b/control/weibo.php @@ -59,17 +59,32 @@ class weibo extends publicBase { $cur_page = $this->post('currentPage') ? $this->post('currentPage') : 1; $page_size = $this->post('pageSize') ? $this->post('pageSize') : 20; - $condition = array(); - if ($spider_comment_status) { - $condition['spider_comment_status'] = $spider_comment_status; - $condition['uid'] = WEIBO_USER_ZHANG; + $es_search = $this->post('es_search') + 0; + $obj = new mWeibo(); + + if($es_search) { + $total = 0; + $list = array(); + $eobj = new mEs('weibo'); + $page_size = 50; + $keyword = trim($this->post('keyword')); + if (!empty($keyword)) { + $weibo_list = $eobj->searchWeibo($keyword); + $total = $weibo_list['total']; + $list = $weibo_list['list']; + } }else{ - $condition['status'] = $status; - } + $condition = array(); + if ($spider_comment_status) { + $condition['spider_comment_status'] = $spider_comment_status; + $condition['uid'] = WEIBO_USER_ZHANG; + }else{ + $condition['status'] = $status; + } - $obj = new mWeibo(); - $total = $obj->getWeiboTotal($condition); - $list = $obj->getWeiboList($condition, $cur_page, $page_size); + $total = $obj->getWeiboTotal($condition); + $list = $obj->getWeiboList($condition, $cur_page, $page_size); + } $rdata = array( 'total' => $total, @@ -209,4 +224,10 @@ class weibo extends publicBase { $this->ajax_json(true, '333'); } + + public function search() { + $keyword = trim($this->get('keyword')); + if(!empty($keyword)) $this->view['keyword'] = urldecode($keyword); + } + } diff --git a/model/mEs.php b/model/mEs.php new file mode 100644 index 0000000..058e40f --- /dev/null +++ b/model/mEs.php @@ -0,0 +1,107 @@ +es_index = $index; + } + + public function search($body) { + $es_url = "http://" . $this->es_host . ":" . $this->es_port . "/{$this->es_index}/_search"; + return $this->postCUrl($es_url, $body, 10, false, true); + } + + public function searchWeibo($keywords) { + if(empty($keywords)) return false; + + $from = 0; + $size = 50; + + $body = [ + 'query' => [ + 'bool' => [ + 'should' => [ + [ + 'match' => [ + 'content' => [ + 'query' => $keywords, + 'boost' => 4, + ] + ] + ], + ], + ], + ], + 'highlight' => [ + 'fields' => [ + 'content' => [ + 'fragment_size' => 2, + 'number_of_fragments' => 20, + 'pre_tags' => [''], + 'post_tags' => [''] + ] + ] + ], + 'from' => $from, + 'size' => $size + ]; + + $res = $this->search(json_encode($body)); + $list = json_decode($res, true); + if(empty($res) || empty($list['hits'])) { + $this->setError('获取失败'); + return false; + } + + $rdata['total'] = $list['hits']['total']+0; + $data['list'] = $list['hits']['hits']; + if($rdata['total'] <= 0) { + $rdata['list'] = array(); + return $rdata; + } + + $rdata['total'] = $size; + $weibo_ids = array_column($data['list'], '_id'); + + $obj = new mWeibo(); + $list = $obj->getWeiboByIds($weibo_ids); + + $rlist = array(); + foreach($data['list'] as $v) { + $weibo_id = $v['_id']; + $weibo = $list[$weibo_id]; + if(empty($weibo)) continue; + + $highlights = $v['highlight']["content"]; + if(!empty($highlights)) { + foreach($highlights as $k=>$val) { + $weibo['text'] = str_replace($val, ''.$val.'', $weibo['text']); + } + } + + $weibo['name'] = '张宝旬'; + $pic_ids = json_decode($weibo['pic_ids'], 1); + $pic_arr = array(); + if ($pic_ids) { + foreach ($pic_ids as $pic_id) { + $pic_arr[] = $obj->getPicOssUrl($pic_id, $weibo['created_at']); + } + } + $weibo['pic_arr'] = $pic_arr; + + if ($weibo['video_url']) $weibo['video_url'] = $obj->getVideoOssUrl($weibo['wid'], $weibo['created_at']); + if ($weibo['video_cover']) $weibo['video_cover'] = $obj->getPicOssUrl($weibo['video_cover'], $weibo['created_at']); + + $rdata['list'][] = $weibo; + } + + return $rdata; + } +} \ No newline at end of file diff --git a/model/mWeibo.php b/model/mWeibo.php index c0eef2c..60da466 100755 --- a/model/mWeibo.php +++ b/model/mWeibo.php @@ -123,4 +123,15 @@ class mWeibo extends mBase { public function getWeiboByWids($wids) { return $this->obj->selectIn($this->tbl, array('wid'=>$wids)); } + + public function getWeiboByIds($ids) { + $res = $this->obj->selectIn($this->tbl, array('id'=>$ids)); + if (empty($res)) return array(); + + $list = array(); + foreach ($res as $v) { + $list[$v['id']] = $v; + } + return $list; + } } \ No newline at end of file diff --git a/tools/es_add_comments.php b/tools/es_add_comments.php index 33102cd..51ffbb5 100644 --- a/tools/es_add_comments.php +++ b/tools/es_add_comments.php @@ -45,7 +45,7 @@ $log_path_success = '/datacenter/zhishiku/es_success_comment.log'; $log_path_err = '/datacenter/zhishiku/es_error_comment.log'; for($page=0;;$page++){ - $sql = "SELECT * FROM spider_weibo_comments where id>".$min_id." order by id asc limit ".$limit; + $sql = "SELECT * FROM spider_weibo_comments where is_search=1 and id>".$min_id." order by id asc limit ".$limit; $result = $conn->query($sql); if ($result->num_rows > 0) { while($row = $result->fetch_assoc()) { diff --git a/tools/es_search.php b/tools/es_search.php index a887788..b7d1d96 100644 --- a/tools/es_search.php +++ b/tools/es_search.php @@ -42,14 +42,6 @@ $body = [ ] ] ], - // [ - // 'match' => [ - // 'abs' => [ - // 'query' => $keywords, - // 'boost' => 3, - // ] - // ] - // ] ], ], ], diff --git a/tools/nohup.out b/tools/nohup.out new file mode 100644 index 0000000..e69de29 diff --git a/view/js/index.js b/view/js/index.js index d5b0df3..51577cb 100755 --- a/view/js/index.js +++ b/view/js/index.js @@ -4,6 +4,7 @@ $(document).ready(function () { var cur_editdata = {}; //当前编辑数据 var vediourl = '' var hidecomments = $('#hidecomments').length + var hidesearch = $('#hidesearch').length $('.radio-wrap').on('click', '.radio_box input', function () { var radio_val = $(this).attr('value') @@ -464,6 +465,16 @@ $(document).ready(function () { } } + if(hidesearch == 1) { + var param = { + currentPage, + pageSize, + spider_comment_status:2, + es_search:1, + keyword:$('#hidekeyword').text() + } + } + $.ajax({ type: "post", dataType: 'json', @@ -473,7 +484,6 @@ $(document).ready(function () { if(!res.status){ alert(`请求失败`); } - renderData(res.data) } }) @@ -490,6 +500,25 @@ $(document).ready(function () { renderList() var html1 = ''; + if(pageData.length == 0 && hidesearch == 1) { + var desctxt = '请输入症状进行查询' + + if($('#hidekeyword').text().trim().length>0) desctxt = '暂无数据' + + html1 = `
+
+
+ `+desctxt+` +
+
+
` + $('#data-list').html(html1); + } + + if(hidesearch == 1 && pageData.length > 0) { + $('#data-list').html(html1); + } + // 渲染当前页数据 pageData.forEach(item => { let imagesHTML = ''; diff --git a/view/templates/include/header.html b/view/templates/include/header.html index 54cc9d0..d02ca0f 100755 --- a/view/templates/include/header.html +++ b/view/templates/include/header.html @@ -15,6 +15,9 @@ {if $_user_info.is_super_admin} 微博评论 {/if} + {if $_user_info.is_super_admin} + 微博小妙招 + {/if} 退出 diff --git a/view/templates/weibo/search.html b/view/templates/weibo/search.html new file mode 100644 index 0000000..c92b068 --- /dev/null +++ b/view/templates/weibo/search.html @@ -0,0 +1,211 @@ + + + + + + + 知识库 + + + + {literal} + + {/literal} + + + +
+ {include file="include/header.html"} + +
+
+
+
+ + +
+
+ + +
+
+ + + + + + + + + +
+

预览

+ Large Image + × +
+ + +
+ + +
+ + + + +
+
+ {include file="include/footer.html"} +
+ + + + + + + + +{literal} + +{/literal} + \ No newline at end of file diff --git a/view/templates/weibo/weibo_search.html b/view/templates/weibo/weibo_search.html new file mode 100644 index 0000000..15e7bec --- /dev/null +++ b/view/templates/weibo/weibo_search.html @@ -0,0 +1,170 @@ + + + + + + + 知识库 + + + + + + +
+ {include file="include/header.html"} + +
+
+
+ + +
+ + +
+
+ + + + + + + + + +
+

预览

+ Large Image + × +
+ + +
+ + +
+ + + + +
+
+ {include file="include/footer.html"} +
+ + + + + + + \ No newline at end of file