betaer 发表于 2011-12-15 17:08:24

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

近日,纵横搜索运营团队发现一部分站点接口异常,数据索引停止,请大家参考如下方案进行修复:
1、索引进度停止
2、热搜词数量太多溢出的处理办法
3、"请求来源不正确,请返回论坛点击"搜索"链接,获取最新的请求地址"的修改方法

betaer 发表于 2011-12-15 17:10:39

本帖最后由 betaer 于 2012-1-6 10:00 编辑

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

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

如接口文件正常,请修改以下两个文件,然后同步站点信息,次日即可看到索引进度产生变化。
1、把论坛/api/manyou/my.php$polls = SearchHelper::getPollInfo($vtIds);
foreach($polls as $tId => $poll) {
      $result['data'][$tId]['pollInfo'] = $poll;
}改为:if ($vtIds) {
    $polls = SearchHelper::getPollInfo($vtIds);
    foreach($polls as $tId => $poll) {
      $result['data'][$tId]['pollInfo'] = $poll;
    }
}2、打开/api/manyou/Manyou.phpfunction getPollInfo($tIds) {
    $sql = 'SELECT * FROM ' . DB::table('forum_polloption') . ' WHERE tid IN (' . implode(',', $tIds) . ')';改为:function getPollInfo($tIds) {
    if (!is_array($tIds) || count($tIds) <= 0) return array();
    $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 中的
<div id="scbar_hot">
                                                <!--{if $_G['setting']['srchhotkeywords']}-->
                                                      <strong class="xw1">{lang hot_search}: </strong>
                                                      <!--{loop $_G['setting']['srchhotkeywords'] $val}-->
                                                                <!--{if $val=trim($val)}-->
                                                                        <!--{eval $valenc=rawurlencode($val);}-->
                                                                        <!--{block srchhotkeywords[]}--><a href="search.php?mod=forum&srchtxt=$valenc&formhash={FORMHASH}&searchsubmit=true&source=hotsearch" target="_blank" class="xi2">$val</a><!--{/block}-->
                                                                <!--{/if}-->
                                                      <!--{/loop}-->
                                                      <!--{echo implode('', $srchhotkeywords);}-->
                                                <!--{/if}-->
                                        </div>
改为如下代码即可实现词超出也不会换行。
注:热搜词如希望只显示一行,请将高度控制在30px以内,即 height: 30px;,该区域的宽、高请根据自己情况进行调整。<style type="text/css">
#scbar_hot { padding-left: 8px; width:200px; height: 30px; line-height: 30px; overflow: hidden; }
#scbar_hot strong, #scbar_hot a { float: left; margin-right: 8px; white-space: nowrap; }
</style>
<div id="scbar_hot">
      <!--{if $_G['setting']['srchhotkeywords']}-->
                <strong class="xw1">{lang hot_search}: </strong>
                <!--{loop $_G['setting']['srchhotkeywords'] $val}-->
                        <!--{if $val=trim($val)}-->
                              <!--{eval $valenc=rawurlencode($val);}-->
                              <!--{block srchhotkeywords[]}-->
                                        <!--{if !empty($searchparams)}-->
                                                <a href="$searchparams?q=$valenc&source=hotsearch{$srchotquery}" target="_blank" class="xi2">$val</a>
                                        <!--{else}-->
                                                <a href="search.php?mod=forum&srchtxt=$valenc&formhash={FORMHASH}&searchsubmit=true&source=hotsearch" target="_blank" class="xi2">$val</a>
                                        <!--{/if}-->
                              <!--{/block}-->
                        <!--{/if}-->
                <!--{/loop}-->
                <!--{echo implode('', $srchhotkeywords);}-->
      <!--{/if}-->
</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文件,搜索如下字符串:<!--{eval $srchotquery .= '&' . $key . '=' . $value;}-->将其替换为:<!--{eval $srchotquery .= '&' . $key . '=' . rawurlencode($value);}-->修改完成后,请更新论坛缓存。

betaer 发表于 2012-1-10 15:06:15

本帖最后由 betaer 于 2012-1-10 15:07 编辑

站外调用搜索框时,将搜索结果跳转到如下地址即可:http://www.discuz.net/search.php?mod=curforum&srchtxt=qq请将http://www.discuz.net 改为您的论坛地址

betaer 发表于 2012-2-28 17:23:25

测试
页: [1]
查看完整版本: 纵横搜索问题解决方案集合【2011.12.27更新】