sphinx+php+脚本,sphinx搜索php代码实现

public function search()

{

if($_POST['s'])

{

$word = $_POST['s'];

$sphinx = new \SphinxClient ();

$sphinx->SetServer ( '127.0.0.1', 9312);

$sphinx->SetConnectTimeout ( 3 );

$sphinx->SetArrayResult ( true );

$sphinx->SetMatchMode ( SPH_MATCH_ANY );

// $sphinx->setRankingMode(SPH_RANK_PROXIMITY_BM25);// 统计相关度计算模式

// SPH_SORT_RELEVANCE 模式, 按相关度降序排列(最好的匹配排在最前面)

$sphinx->SetSortMode ( SPH_SORT_RELEVANCE );

// $sphinx->SetSortMode ( SPH_SORT_EXTENDED ,"@weight DESC,atime DESC" );

$sphinx->SetLimits(0,20);

// 设置字段权重

// $sphinx->setFieldWeights(array('title'=>2000));

$result = $sphinx->Query ( $word, 'article_zhuqiyang' );

// 查询出结果

$where['id'] = array('in',array_column($result['matches'],'id'));

$list = M('article')->field('id,title,atime')->where($where)->select();

// 装饰结果集

$title = array_column($list,'title');

$title = $sphinx->BuildExcerpts($title,'article_zhuqiyang',$word,array(

'before_match'=>'',

'after_match'=>''

));

$weight = array_column($result['matches'],'weight','id');

$list_count = count($list);

for ($i = 0; $i 

$list[$i]['title'] = $title[$i];

$list[$i]['weight'] = $weight[$list[$i]['id']];

}

usort($list, function($a, $b) {

$aw = $a['weight'];

$bw = $b['weight'];

$aa = $a['atime'];

$ba = $b['atime'];

if($aw == $bw){

if($aa == $ba){

return 0;

}

return ($aa 

}

return ($aw 

});

$this->assign('list',$list);

}

$this->display();

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值