研究了下新的coreseek,发现增加了 sql_field_string字符类型,用于存储全文索引类字段源内容,这样在搜索之后,提取结果集时,不再需要查询一次数据库。配置方式如下:
在原配置中增加:
sql_field_string = content
其余配置和coreseek(中文全文搜索)安装和使用(一)差不多,这里就不说了,不知道的再去看下。
下面讲下如何将coreseek和php程序结合使用:
0)先要把coreseed启动,不然怎么测试呢,方法前面讲过了!
1)将coreseek/api下的sphinxapi.php文件复制到你的php项目中,这里我在ci框架测试:
控制器(welcome.php):
public function index()
{
$this->load->view('sphinx');
}
public function make()
{
$this->load->helper('sphinxapi_helper');
$key=$this->input->post('keyword');
$sphinx = new SphinxClient();//sphinx的主机名和端口
$sphinx->SetServer ( 'localhost', 9312 );//设置返回结果集为php数组格式
$sphinx->SetArrayResult ( true );//匹配结果的偏移量,参数的意义依次为:起始位置,返回结果条数,最大匹配条数
$sphinx->SetLimits(0, 20, 1000);//最大搜索时间
$sphinx->SetMaxQueryTime(10);
$result = $sphinx->query($key,"email");
if(isset($result['matches'])&&$result['matches']!="")
{
$data['result'] =($result['matches']);
$this->load->view('view',$data);
}
else{echo '没有搜索到你需要的内容'; }
}
视图:(view.php)
<?php
foreach($result as $v){
echo $v['attrs']['content'];
}
?>
模型(sphinx_model.php):
function __construct()
{
parent::__construct();
$this->load->database();
}
function result($where)
{
$this->db->where($where);
$query = $this->db->get('email');
return $query->result_array();
}
大公告成,没有出错就可以看到你插入数据库里字段content的内容了:
输入查询内容:
查询结果:
以上只是一个简单的demo,大家可以按自己的需求改动即可!