Sphinx的全文检检索http://www.coreseek.cn/products-install/install_on_windows/#testpackdesc下载
Sqlsrv数据库,
1.在文件D:\coreseek\etc\csft.conf的内容
#源定义
source mssql
{
type = odbc
sql_host = (local)
sql_user = user
sql_pass = 111111
sql_db = test
sql_port = 1433
odbc_dsn = DSN=odbc_sphinx1;Uid=dbo_spms_user;Pwd=sioc_spms2014
sql_query = SELECT id,ICSNumber,chemNameEN,chemNameCN FROM test where chemNameCN != '' and chemNameEN != ''
sql_attr_uint = id
#sql_attr_timestamp = date_added
#sql_query_info_pre = SET NAMES gbk
sql_query_info = SELECT * FROM test WHERE id=$id
}
#index定义
index mssql
{
source = mssql #对应的source名称
path = D:/0_SPMS/Sphinx/var/data/sqlsrv #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...
docinfo = extern
mlock = 0
morphology = none
min_word_len = 1
html_strip = 0
#charset_dictpath = /usr/local/mmseg3/etc/ #BSD、Linux环境下设置,/符号结尾
charset_dictpath = D:/0_SPMS/Sphinx/etc/ #Windows环境下设置,/符号结尾,最好给出绝对路径,例如:C:/usr/local/coreseek/etc/...
charset_type = zh_cn.gbk #支持中文,使用的时候需要转码
}
#全局index定义
indexer
{
mem_limit = 512M
}
#searchd服务定义
searchd
{
listen = 9312
read_timeout = 5
max_children = 30
max_matches = 1000
seamless_rotate = 0
preopen_indexes = 0
unlink_old = 1
pid_file = D:/0_SPMS/Sphinx/var/log/searchd_sql_pid.pid #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...
log = D:/0_SPMS/Sphinx/var/log/searchd_sql.log #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...
query_log = D:/0_SPMS/Sphinx//var/log/query_sql.log #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...
# binlog_path = #关闭binlog日志
}
注意:odbc_sphinx1是在数据源中天津的dsn
2. 在D:\coreseek\api\test.php中测试
require ( "sphinxapi.php" );
$cl = new SphinxClient ();
$cl->SetServer ( '127.0.0.1', 9312);
$cl->SetConnectTimeout ( 3 );
$cl->SetArrayResult ( true );
$cl->SetMatchMode ( SPH_MATCH_ANY);
$tmp = iconv("utf-8","gbk",'阿斯利多');
echo $tmp;
//$res = $cl->Query ($tmp, "mssql" );
//$res = $cl->Query ( '测试', "*" );
echo '
';print_r($cl);
print_r($res);
3在ci中调用
Public function get_sphinx(){
include_once __ROOT__.APPPATH . 'libraries/sphinxapi.php';
$cl = new SphinxClient ();
$cl->SetServer ( __IPSPHINX__, __PORTSPHINX__);
$cl->SetConnectTimeout ( 3 );
$cl->SetArrayResult ( true );
$cl->SetMatchMode ( SPH_MATCH_ANY);
// $tmp = iconv("utf-8","gbk",'阿斯利多');
$tmp = iconv("utf-8","gbk",$keywords);
$res = $cl->Query ($tmp, "mssql" );
$id_arr = '';
$res_arr = $res['matches'];
foreach($res_arr as $key=>$ss){
if($key == (count($res_arr)-1)){
$id_arr .= $ss['id'];
}else{
$id_arr .= $ss['id'].',';
}
}
$sql = "select top 1000 ID,mol_id,CAS,ICSNumber,keyword,CASNamber,MOLWeighti,ICS,chemNameEN,chemNameCN from h2o_keywords4pro2 where id in({$id_arr})";
$res_all = $this->db->query($sql)->result_array();
return $res_all;
}
主要是针对sqlsql,mysql的比较简单,默认的为mysql。出现警告时没问题