PageRenderTime 46ms CodeModel.GetById 20ms RepoModel.GetById 0ms app.codeStats 0ms

/php/xuzhou58/xuzhou58.com/dede/article_keywords_make.php

http://jqbird.googlecode.com/
PHP | 223 lines | 210 code | 8 blank | 5 comment | 32 complexity | e16d60cd458a142a634e6d10bb438dd4 MD5 | raw file
Possible License(s): GPL-3.0, LGPL-3.0, LGPL-2.1, GPL-2.0
  1. <?php
  2. @ob_start();
  3. @set_time_limit(3600);
  4. require_once(dirname(__FILE__).'/config.php');
  5. CheckPurview('sys_Keyword');
  6. if(empty($dopost))
  7. {
  8. $dopost = '';
  9. }
  10. //?????????????????????
  11. if($dopost=='analyse')
  12. {
  13. echo "??????????...<br/>\r\n";
  14. flush();
  15. $ws = $wserr = $wsnew = "";
  16. $dsql->SetQuery("Select * from `#@__keywords`");
  17. $dsql->Execute();
  18. while($row = $dsql->GetObject())
  19. {
  20. if($row->sta==1)
  21. {
  22. $ws[$row->keyword] = 1;
  23. }
  24. else
  25. {
  26. $wserr[$row->keyword] = 1;
  27. }
  28. }
  29. echo "????????????<br/>\r\n";
  30. flush();
  31. echo "???????????????????????...<br/>\r\n";
  32. flush();
  33. $dsql->SetQuery("Select id,keywords from `#@__archives`");
  34. $dsql->Execute();
  35. while($row = $dsql->GetObject())
  36. {
  37. $keywords = explode(',',trim($row->keywords));
  38. $nerr = false;
  39. $mykey = '';
  40. if(is_array($keywords))
  41. {
  42. foreach($keywords as $v)
  43. {
  44. $v = trim($v);
  45. if($v=='')
  46. {
  47. continue;
  48. }
  49. if(isset($ws[$v]))
  50. {
  51. $mykey .= $v." ";
  52. }
  53. else if(isset($wsnew[$v]))
  54. {
  55. $mykey .= $v.' ';
  56. $wsnew[$v]++;
  57. }
  58. else if(isset($wserr[$v]))
  59. {
  60. $nerr = true;
  61. }
  62. else
  63. {
  64. $mykey .= $v." ";
  65. $wsnew[$v] = 1;
  66. }
  67. }
  68. }
  69. }
  70. echo "???????????<br/>\r\n";
  71. flush();
  72. if(is_array($wsnew))
  73. {
  74. echo "????????...<br/>\r\n";
  75. flush();
  76. arsort($wsnew);
  77. echo "??????????...<br/>\r\n";
  78. flush();
  79. foreach($wsnew as $k=>$v)
  80. {
  81. if(strlen($k)>20)
  82. {
  83. continue;
  84. }
  85. $dsql->SetQuery("Insert Into `#@__keywords`(keyword,rank,sta,rpurl) Values('".addslashes($k)."','$v','1','')");
  86. $dsql->Execute();
  87. }
  88. echo "?????????<br/>\r\n";
  89. flush();
  90. sleep(1);
  91. }
  92. else
  93. {
  94. echo "???????????<br/>\r\n";
  95. flush();
  96. sleep(1);
  97. }
  98. ShowMsg('??????????????????','article_keywords_main.php');
  99. exit();
  100. }
  101. //???????????????????
  102. else if($dopost=='fetch')
  103. {
  104. require_once(DEDEINC."/splitword.class.php");
  105. if(empty($startdd))
  106. {
  107. $startdd = 0;
  108. }
  109. if(empty($pagesize))
  110. {
  111. $pagesize = 20;
  112. }
  113. if(empty($totalnum))
  114. {
  115. $totalnum = 0;
  116. }
  117. //??????
  118. if($totalnum==0)
  119. {
  120. $row = $dsql->GetOne("Select count(*) as dd From `#@__archives` where channel='1' ");
  121. $totalnum = $row['dd'];
  122. }
  123. //???????????
  124. if($totalnum > $startdd+$pagesize)
  125. {
  126. $limitSql = " limit $startdd,$pagesize";
  127. }
  128. else if(($totalnum-$startdd)>0)
  129. {
  130. $limitSql = " limit $startdd,".($totalnum - $startdd);
  131. }
  132. else
  133. {
  134. $limitSql = '';
  135. }
  136. $tjnum = $startdd;
  137. if($limitSql!='')
  138. {
  139. $fquery = "Select arc.id,arc.title,arc.keywords,addon.body From `#@__archives` arc
  140. left join `#@__addonarticle` addon on addon.aid=arc.id where arc.channel='1' $limitSql ";
  141. $dsql->SetQuery($fquery);
  142. $dsql->Execute();
  143. $sp = new SplitWord($cfg_soft_lang, $cfg_soft_lang);
  144. while($row=$dsql->GetObject())
  145. {
  146. if($row->keywords!='')
  147. {
  148. continue;
  149. }
  150. $tjnum++;
  151. $id = $row->id;
  152. $keywords = "";
  153. $sp->SetSource($row->title, $cfg_soft_lang, $cfg_soft_lang);
  154. $titleindexs = $sp->GetFinallyIndex();
  155. $sp->SetSource(Html2Text($row->body), $cfg_soft_lang, $cfg_soft_lang);
  156. $allindexs = $sp->GetFinallyIndex();
  157. if(is_array($allindexs) && is_array($titleindexs))
  158. {
  159. foreach($titleindexs as $k)
  160. {
  161. if(strlen($keywords)>=30)
  162. {
  163. break;
  164. }
  165. else
  166. {
  167. $keywords .= $k.",";
  168. }
  169. }
  170. foreach($allindexs as $k)
  171. {
  172. if(strlen($keywords)>=30)
  173. {
  174. break;
  175. }
  176. else if(!in_array($k,$titleindexs))
  177. {
  178. $keywords .= $k.",";
  179. }
  180. }
  181. }
  182. $keywords = addslashes($keywords);
  183. if($keywords=='')
  184. {
  185. $keywords = ',';
  186. }
  187. $dsql->ExecuteNoneQuery("update `#@__archives` set keywords='$keywords' where id='$id'");
  188. }
  189. unset($sp);
  190. }//end if limit
  191. //??????
  192. if($totalnum>0)
  193. {
  194. $tjlen = ceil( ($tjnum/$totalnum) * 100 );
  195. }
  196. else
  197. {
  198. $tjlen=100;
  199. }
  200. $dvlen = $tjlen * 2;
  201. $tjsta = "<div style='width:200;height:15;border:1px solid #898989;text-align:left'><div style='width:$dvlen;height:15;background-color:#829D83'></div></div>";
  202. $tjsta .= "<br/>??????????$tjlen %????{$startdd}???????...";
  203. if($tjnum < $totalnum)
  204. {
  205. $nurl = "article_keywords_make.php?dopost=fetch&totalnum=$totalnum&startdd=".($startdd+$pagesize)."&pagesize=$pagesize";
  206. ShowMsg($tjsta,$nurl,0,500);
  207. }
  208. else
  209. {
  210. ShowMsg("???????","javascript:;");
  211. }
  212. exit();
  213. }
  214. include DedeInclude('templets/article_keywords_make.htm');
  215. ?>