实现关键词的时间热度分析
最终的效果是,前端输入关键词,点击开始后显示每一天出现该关键词的新闻条数
前端添加的代码是
<div class="search bar2">
<input type="text" name="keywordtime" id="HeatAnalysisKeyword" placeholder="输入关键词进行时间热度分析">
<input type="button" value="开始" onclick="HeatAnalysis()">
<p id="demo">时间热度分析: </p>
</div>
点击开始按钮,即在后端执行HeatAnalysis()函数
HeatAnalysis()函数的结构是:
HeatAnalysis = function () {
const totNews = ${cnt};
var key = document.getElementById("HeatAnalysisKeyword").value;
var heat = new Array();
var tmpStr;
var ttime;
for(let i = 0; i < totNews; ++i) {
tmpStr = document.getElementById(\`c\${i}\`).innerHTML;
ttime = document.getElementById(\`p\${i}\`).innerHTML.split(" ")[0];
if (ttime == null || ttime == undefined || ttime == '') {
continue;
}
if(tmpStr.search(key) != -1 && heat.hasOwnProperty(ttime)) {
heat[ttime]++;
}
else if(tmpStr.search(key) != -1 && !heat.hasOwnProperty(ttime)) {
heat[ttime] = 1;
}
}
var str = "";
for(var j in heat){
str += ( j + " " + heat[j] + "条包含该关键词的新闻"+"</br>");
}
document.getElementById("demo").innerHTML = str;
}
其中heat是用于存放时间热度的字典,key是从前端拿到的输入的关键字。循环遍历每一条新闻,得到新闻内容tmpStr和发布日期ttime,以ttime作为字典的键,如果新闻内容包含该关键字,则某日期对应的值+1。最后在前端显示出这个字典即可。
踩过的坑:
(1)最开始的问题是<td id="p${x}">${sqlfetch.publish_date}</td>
这里少打了个引号,通过alert输出debug时,发现无法输出ttime日期排查出来。
(2)js使用document.write输出时换行符因为要被html识别使用,不能用转义字符\n ,要使用br标签,(“X”+"")。这一点真的查了好久,因为网页总是没有显示,alert却可以循环输出我的字典内容,一直在试图修改字符串的拼接…也尝试了判断日期是否非空等等(那段代码应该是非必要的)
感谢:https://blog.csdn.net/u010743370/article/details/50974603