【分享】sphinx的小技巧三则(最大记录数、高亮、搜索排序)

一:Sphinx(coreseek)的查询默认最大记录数是:1000,而我们想更改这个数值。就需要更改二个地方。

1是更改csft.conf(如果是sphinx就是sphinx.conf)配置文件的:max_matches = 10000 #后面数字就是你想查询的最大记录数。建议在1000~10000之内。
2是在api调用时,$cl->SetLimits($pageStart, $pageSize, $max_limits);用SetLimits的第三个参数更改为你想要的显示最大记录数。
经过这二个配置和程序更改,你再查询看看呢!(注意你搜索要有这么多记录哦。呵)


二:sphinx的高亮。

开始按程序来设置高亮,都是没问题的。因为都是英文嘛。问题点主要是出现在中文的高亮上面。我的页面和数据库都是gbk编码。
所以做了如下配置和程序更改。

$opts = array(
"before_match" => "<i>",
"after_match" => "</i>",
"chunk_separator" => "..",
"limit" => 10,
"around" => 3
);

//$docs必须是数组传进来哦

function search_highlight($docs) {
$this->s_keywords = iconv('gbk', 'utf-8', $this->s_keywords);
$docs[0] = iconv('gbk', 'utf-8', $docs[0]);
$arr_words = $this->h_cl->BuildExcerpts ( $docs, $this->s_index, $this->s_keywords, $this->h_opts);
$arr_words[0] = iconv('utf-8', 'gbk', $arr_words[0]);
$this->s_keywords = iconv('utf-8', 'gbk', $this->s_keywords);
return $arr_words;
}
至此,中文高亮就显示正常了


三:搜索排序

默认我用了:$cl->SetMatchMode(SPH_SORT_RELEVANCE);,
而我如果想把最新的结果显示在前面,必须要用SPH_SORT_TIME_SEGMENTS模式。
所以我在配置文件里加上了:sql_attr_timestamp = add_time
在程序中就加上了:$cl->SetSortMode(SEGMENTS, 'add_time');
这样就正常了!

原文地址:http://bbs.lampbrother.net/read-htm-tid-122041.html

<script type=text/javascript charset=utf-8 src="http://static.bshare.cn/b/buttonLite.js#style=-1&uuid=&pophcol=3&lang=zh"></script> <script type=text/javascript charset=utf-8 src="http://static.bshare.cn/b/bshareC0.js"></script>
阅读(44) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
评论热议
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值