function keyword_search(){
global $wpdb;
$impl = safe_num_str($_POST['except']);
if($_POST['kwd'] == '') {
$myrows = $wpdb->get_results($wpdb->prepare("SELECT id, title FROM cv_posts WHERE id NOT IN(".$impl.") LIMIT %d, 5;", (number_format($_POST['curr_page']) - 1) * 5));
$leng = $wpdb->get_col("SELECT count(*) AS cnt FROM cv_posts;");
} else {
$myrows = $wpdb->get_results($wpdb->prepare( "SELECT id, title FROM cv_posts WHERE id NOT IN(".$impl.") AND id IN (SELECT posts_id FROM cv_keyword WHERE word LIKE '%%%s%%') LIMIT %d, 5;", $_POST['kwd'], (number_format($_POST['curr_page']) - 1) * 5 ));
$leng = $wpdb->get_col($wpdb->prepare( "SELECT count(*) AS cnt FROM cv_posts WHERE id IN (SELECT posts_id FROM cv_keyword WHERE word LIKE '%%%s%%');", $_POST['kwd'] ))[0];
}
echo json_encode(array('leng'=> $leng, 'row'=>$myrows));
wp_die();
}
add_action( 'wp_ajax_keyword_search', 'keyword_search' );
add_action( 'wp_ajax_nopriv_keyword_search', 'keyword_search' );
//生成詞頻
function wordcloud_process() {
global $wpdb;
$impl = safe_num_str($_POST['except']);
$myrows = $wpdb->get_results( "SELECT word, count(*) AS cnt FROM cv_keyword WHERE posts_id NOT IN(".$impl.") GROUP BY word ORDER BY cnt DESC LIMIT 10;" );
echo json_encode($myrows);
wp_die();
}
add_action( 'wp_ajax_wordcloud_process', 'wordcloud_process' );
add_action( 'wp_ajax_nopriv_wordcloud_process', 'wordcloud_process' );
//根據文章id查找文章詳細資訊
function paper_detail() {
global $wpdb;
$myrows = $wpdb->get_results($wpdb->prepare( "SELECT * FROM cv_posts WHERE id = %d;", $_POST['paper_id'] ));
echo json_encode($myrows[0]);
wp_die();
}
add_action( 'wp_ajax_paper_detail', 'paper_detail' );
add_action( 'wp_ajax_nopriv_paper_detail', 'paper_detail' );
//統計某一關鍵詞多年來的資訊
function keyword_count() {
global $wpdb;
$impl = safe_num_str($_POST['except']);
$myrows = $wpdb->get_results($wpdb->prepare("SELECT meeting, year, count(*) as cnt FROM cv_keyword WHERE posts_id NOT IN(".$impl.") AND word = %s GROUP BY year, meeting;", $_POST['kwd']));
echo json_encode($myrows);
wp_die();
}
add_action( 'wp_ajax_keyword_count', 'keyword_count' );
add_action( 'wp_ajax_nopriv_keyword_count', 'keyword_count' );
//資料庫建表代碼
CREATE TABLE `cv_keyword` (
`posts_id` int(11) NOT NULL,
`word` varchar(191) COLLATE utf8mb4_bin NOT NULL,
`year` int(11) NOT NULL,
`meeting` char(4) COLLATE utf8mb4_bin NOT NULL,
PRIMARY KEY (`posts_id`,`word`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin
CREATE TABLE `cv_posts` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`year` int(11) NOT NULL,
`meeting` char(4) COLLATE utf8mb4_bin NOT NULL,
`title` mediumtext COLLATE utf8mb4_bin NOT NULL,
`keywords` mediumtext COLLATE utf8mb4_bin,
`abstract` mediumtext COLLATE utf8mb4_bin NOT NULL,
`url` mediumtext COLLATE utf8mb4_bin NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=23248 DEFAULT CHARSET=utf8mb4
COLLATE=utf8mb4_bin