本来想要的是模糊匹配
比如test
全部匹配test 优先级最高
少一个字匹配tes
再少一字匹配te
等等
select * from file where filename like'%test%'; --1029条
与Sphinx下面结果不一致? 更要命的是Sphinx搜的数据还少
下面结果257条 ,且这257条在SQL查的结果中全部有。
coreseek 4.1
<?php // -------------------------------------------------------------------------- // File name : test_coreseek.php // Description : coreseek中文全文检索系统测试程序 // Requirement : PHP5 (http://www.php.net) // // Copyright(C), HonestQiao, 2011, All Rights Reserved. // // Author: HonestQiao (honestqiao@gmail.com) // // 最新使用文档,请查看:http://www.coreseek.cn/products/products-install/ // // -------------------------------------------------------------------------- require ( "sphinxapi.php" ); $cl = new SphinxClient (); $cl->SetServer ( '127.0.0.1', 9312); $cl->SetConnectTimeout ( 10 ); $cl->SetArrayResult ( true ); $cl->SetMatchMode ( SPH_MATCH_ALL); //$cl->SetMatchMode ( SPH_MATCH_EXTENDED2); $cl->SetLimits(0, 1000); $info = 'test'; $res = $cl->Query($info, 'mysql');//shopstore_search //print_r($cl); //print_r($res); //结果处理 if ( $res===false ) { print "Query failed: " . $cl->GetLastError() . ".\n"; } else { if ( $cl->GetLastWarning() ) print "WARNING: " . $cl->GetLastWarning() . "\n\n"; print "Query '$info' retrieved $res[total] of $res[total_found] matches in $res[time] sec.<br>\n"; print "Query stats:\n"; if ( is_array($res["words"]) ) foreach ( $res["words"] as $word => $info ) print " '$word' found $info[hits] times in $info[docs] documents\n"; print "\n"; if ( is_array($res["matches"]) ) { $n = 1; print "Matches:<br>\n"; foreach ( $res["matches"] as $docinfo ) { print "$n. doc_id=$docinfo[id], weight=$docinfo[weight]"; foreach ( $res["attrs"] as $attrname => $attrtype ) { $value = $docinfo["attrs"][$attrname]; if ( $attrtype==SPH_ATTR_MULTI || $attrtype==SPH_ATTR_MULTI64 ) { $value = "(" . join ( ",", $value ) .")"; } else { if ( $attrtype==SPH_ATTR_TIMESTAMP ) $value = date ( "Y-m-d H:i:s", $value ); } print ", $attrname=$value"; } print "<br>\n"; $n++; } } }
#MySQL数据源配置,详情请查看:http://www.coreseek.cn/products-install/mysql/ #请先将var/test/documents.sql导入数据库,并配置好以下的MySQL用户密码数据库 #源定义 source mysql { type = mysql sql_host = 我改了 sql_user = 我改了 sql_pass = 我改了 sql_db = wangpansou sql_port = 3306 sql_query_pre = SET NAMES utf8 sql_query = SELECT id,id, filename, uk, category,weight,valid FROM file #sql_query第一列id需为整数 #title、content作为字符串/文本字段,被全文索引 sql_attr_uint = id #从SQL读取到的值必须为整数 # sql_attr_timestamp = date_added #从SQL读取到的值必须为整数,作为时间属性 sql_query_info_pre = SET NAMES utf8 #命令行查询时,设置正确的字符集 sql_query_info = SELECT * FROM file WHERE id=$id #命令行查询时,从数据库读取原始数据信息 } #index定义 index mysql { source = mysql #对应的source名称 path = E:/WWW/coreseek/var/data/mysql #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/... docinfo = extern mlock = 0 morphology = none min_word_len = 1 html_strip = 0 #中文分词配置,详情请查看:http://www.coreseek.cn/products-install/coreseek_mmseg/ #charset_dictpath = /usr/local/mmseg3/etc/ #BSD、Linux环境下设置,/符号结尾 charset_dictpath = E:/WWW/coreseek/etc/ #Windows环境下设置,/符号结尾,最好给出绝对路径,例如:C:/usr/local/coreseek/etc/... charset_type = zh_cn.utf-8 } #全局index定义 indexer { mem_limit = 128M } #searchd服务定义 searchd { listen = 9312 read_timeout = 5 max_children = 30 max_matches = 1000 seamless_rotate = 0 preopen_indexes = 0 unlink_old = 1 pid_file = E:/WWW/coreseek/var/log/searchd_mysql.pid #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/... log = E:/WWW/coreseek/var/log/searchd_mysql.log #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/... query_log = E:/WWW/coreseek/var/log/query_mysql.log #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/... binlog_path = #关闭binlog日志 }