Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

[已解决] 纵横搜索问题解决方案集合【2011.12.27更新】

 关闭 [复制链接]
betaer 发表于 2011-12-15 17:08:24 | 显示全部楼层 |阅读模式
近日,纵横搜索运营团队发现一部分站点接口异常,数据索引停止,请大家参考如下方案进行修复:
1、索引进度停止
2、热搜词数量太多溢出的处理办法
3、"请求来源不正确,请返回论坛点击"搜索"链接,获取最新的请求地址"的修改方法
 楼主| betaer 发表于 2011-12-15 17:10:39 | 显示全部楼层
本帖最后由 betaer 于 2012-1-6 10:00 编辑

站点索引停止了,请参考下述方法进行修复

在网站可正常访问的情况下,请首先保证/api/manyou/my.php的正常访问,并且没有任何报错,正确格式可请参照官网 https://discuz.dismall.com/api/manyou/my.php

如接口文件正常,请修改以下两个文件,然后同步站点信息,次日即可看到索引进度产生变化。
1、把论坛/api/manyou/my.php
  1. $polls = SearchHelper::getPollInfo($vtIds);
  2. foreach($polls as $tId => $poll) {
  3.         $result['data'][$tId]['pollInfo'] = $poll;
  4. }
复制代码
改为:
  1. if ($vtIds) {
  2.     $polls = SearchHelper::getPollInfo($vtIds);
  3.     foreach($polls as $tId => $poll) {
  4.         $result['data'][$tId]['pollInfo'] = $poll;
  5.     }
  6. }
复制代码
2、打开/api/manyou/Manyou.php
  1. function getPollInfo($tIds) {
  2.     $sql = 'SELECT * FROM ' . DB::table('forum_polloption') . ' WHERE tid IN (' . implode(',', $tIds) . ')';
复制代码
改为:
  1. function getPollInfo($tIds) {
  2.     if (!is_array($tIds) || count($tIds) <= 0) return array();
  3.     $sql = 'SELECT * FROM ' . DB::table('forum_polloption') . ' WHERE tid IN (' . implode(',', $tIds) . ')';
复制代码
修复完成后,请同步站点信息

如果您的站点修复了接口但还是有问题,请在这个帖子跟帖,并说明索引进度停止,会有专人跟进排查。




回复

使用道具 举报

 楼主| betaer 发表于 2011-12-27 14:58:26 | 显示全部楼层
本帖最后由 betaer 于 2012-1-16 09:54 编辑

热搜词数量太多溢出的处理办法

找到\template\default\common\pubsearchform.htm 中的

  1. <div id="scbar_hot">
  2.                                                 <!--{if $_G['setting']['srchhotkeywords']}-->
  3.                                                         <strong class="xw1">{lang hot_search}: </strong>
  4.                                                         <!--{loop $_G['setting']['srchhotkeywords'] $val}-->
  5.                                                                 <!--{if $val=trim($val)}-->
  6.                                                                         <!--{eval $valenc=rawurlencode($val);}-->
  7.                                                                         <!--{block srchhotkeywords[]}--><a href="search.php?mod=forum&srchtxt=$valenc&formhash={FORMHASH}&searchsubmit=true&source=hotsearch" target="_blank" class="xi2">$val</a><!--{/block}-->
  8.                                                                 <!--{/if}-->
  9.                                                         <!--{/loop}-->
  10.                                                         <!--{echo implode('', $srchhotkeywords);}-->
  11.                                                 <!--{/if}-->
  12.                                         </div>
复制代码
改为如下代码即可实现词超出也不会换行。
注:热搜词如希望只显示一行,请将高度控制在30px以内,即 height: 30px;,该区域的宽、高请根据自己情况进行调整。
  1. <style type="text/css">
  2. #scbar_hot { padding-left: 8px; width:200px; height: 30px; line-height: 30px; overflow: hidden; }
  3. #scbar_hot strong, #scbar_hot a { float: left; margin-right: 8px; white-space: nowrap; }
  4. </style>
  5. <div id="scbar_hot">
  6.         <!--{if $_G['setting']['srchhotkeywords']}-->
  7.                 <strong class="xw1">{lang hot_search}: </strong>
  8.                 <!--{loop $_G['setting']['srchhotkeywords'] $val}-->
  9.                         <!--{if $val=trim($val)}-->
  10.                                 <!--{eval $valenc=rawurlencode($val);}-->
  11.                                 <!--{block srchhotkeywords[]}-->
  12.                                         <!--{if !empty($searchparams[0])}-->
  13.                                                 <a href="$searchparams[0]?q=$valenc&source=hotsearch{$srchotquery}" target="_blank" class="xi2">$val</a>
  14.                                         <!--{else}-->
  15.                                                 <a href="search.php?mod=forum&srchtxt=$valenc&formhash={FORMHASH}&searchsubmit=true&source=hotsearch" target="_blank" class="xi2">$val</a>
  16.                                         <!--{/if}-->
  17.                                 <!--{/block}-->
  18.                         <!--{/if}-->
  19.                 <!--{/loop}-->
  20.                 <!--{echo implode('', $srchhotkeywords);}-->
  21.         <!--{/if}-->
  22. </div>
复制代码
修改后请更新论坛缓存



回复

使用道具 举报

 楼主| betaer 发表于 2011-12-28 15:11:44 | 显示全部楼层
本帖最后由 betaer 于 2012-1-6 10:15 编辑

“请求来源不正确,请返回论坛点击"搜索"链接,获取最新的请求地址” 的修改办法
打了 Discuz! X2 R20111010 & Discuz! X2 R20111221 补丁包的UTF8站点,请按照本方法进行修改:


找到/template/default/common/pubsearchform.htm文件,搜索如下字符串:
  1. <!--{eval $srchotquery .= '&' . $key . '=' . $value;}-->
复制代码
将其替换为:
  1. <!--{eval $srchotquery .= '&' . $key . '=' . rawurlencode($value);}-->
复制代码
修改完成后,请更新论坛缓存

回复

使用道具 举报

 楼主| betaer 发表于 2012-1-10 15:06:15 | 显示全部楼层
本帖最后由 betaer 于 2012-1-10 15:07 编辑

站外调用搜索框时,将搜索结果跳转到如下地址即可:
  1. https://discuz.dismall.com/search.php?mod=curforum&srchtxt=qq
复制代码
请将https://discuz.dismall.com 改为您的论坛地址
回复

使用道具 举报

 楼主| betaer 发表于 2012-2-28 17:23:25 | 显示全部楼层
测试
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-9-28 21:19 , Processed in 0.095432 second(s), 16 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表