1.在zend-studio中的项目explorer中右键-》import->选择svn->project from svn-》next-》选择create new ...location-》url里面输入项目的地址:例如:svn://192.168.1.230/xuexi。
2.在下面输入你登陆svn的用户名和密码,然后,选中save password。之后点击next。
3.之后这步非常重要,很容易搞的新手不知道怎么做的一步。因为路径对了,用户名密码都对了,但是到这个页面后next和finish这两个按钮都不可用。都懵了。怎么办呢?
其实你只要点击路径旁边的browser按钮,选择一下你到底要down多少内容(down哪个目录)下来就可以了。如果路径写的够到位,一般这里都只是点击确定就可以了,不用再选路径了。
然后就finish按钮就可以用了,点击后,出来的窗体中选中check out 。。。a project 这个选项,然后在下面输入框中给你想down下来的项目命名。注意这里千万不要点击finish,虽然这样成功了,但是down下来的代码被放到了zendstudio的默认项目路径里面去了,不出意外一般都在c盘里面。如果你愿意,可以放到里面咯。
4.点击next,去下一个窗体选择down下来的项目放到哪个路径里面去。具体步骤是取消勾选use default workspace。。。这个选项。然后在下面的路径选择框中选择路径。
5.完成以后点击finish。这样代码就down下来了。
1.将下载下来的文件包解压,重新命名为sphinx或者其他。然后放到一个比较合适的位置,一般放到d盘根目录下面。
2.找到D:\sphinx\etc里面的csft_mysql.conf这个文件,打开它,推荐用ue或者editplus。因为记事本打开会没有样式。这是因为在linux下面的文件的缘故。
3.做必要的修改。因为这个修改因表不同和你想要取的内容不同,这里就没有标准的,只能给个实例我的修改是这样的:
#源定义
source main
{
type = mysql
sql_host = 192.168.1.250
sql_user = root
sql_pass = 123456
sql_db = db_youxue
sql_port = 3306
sql_query_pre = SET NAMES utf8
sql_query_pre = set SESSION query_cache_type = OFF #我加的
sql_query_pre = replace into sph_counter select 1,max(Fid) from t_store #我加的
sql_query = SELECT Fid, Ftitle, Fcontent, Fprovince,Fexamtitle, UNIX_TIMESTAMP(Fcreatetime) AS Fcreatetime FROM t_store where Fid<=(select Fmaxid from sph_counter where Fid = 1)
#sql_query第一列id需为整数
#title、content作为字符串/文本字段,被全文索引
sql_attr_uint = Fid #从SQL读取到的值必须为整数
sql_attr_timestamp = Fcreatetime #从SQL读取到的值必须为整数,作为时间属性
sql_query_info = SELECT * FROM t_store WHERE Fid=$id #命令行查询时,从数据库读取原始数据信息
}
#index定义
index main
{
source = main #对应的source名称
path = var/data/mysql
docinfo = extern
mlock = 0
morphology = none
min_word_len = 1
html_strip = 0
#charset_dictpath = /usr/local/mmseg3/etc/ #BSD、Linux环境下设置,/符号结尾
charset_dictpath = etc/ #Windows环境下设置,/符号结尾
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 = var/log/searchd_mysql.pid
log = var/log/searchd_mysql.log
query_log = var/log/query_mysql.log
}
source deltaMain: main
{
sql_query_pre = set names utf8
sql_query = SELECT Fid, Ftitle, Fcontent, Fprovince,Fexamtitle, UNIX_TIMESTAMP(Fcreatetime) AS Fcreatetime FROM t_store where Fid>(select Fmaxid from sph_counter where Fid=1)
}
index deltaMain: main
{
source = deltaMain
path = var/data/delta
}
这样配置就可以了。
4.在命令行里面找到sphinx的目录。然后输入:
bin\indexer -c etc\csft_mysql.conf
回车,这个是生成新的索引。
5.再输入:
bin\indexer -c etc\csft_mysql.conf --all
回车,如果这里数据大的话会等待些时间。一般10000条20秒吧。反正没有官方说的快。再输入:
bin\searchd -c etc\csft_mysql.conf --console 回车启动searchd服务。这个时候可以在任务管理器的进程中找到这个searchd服务。这样就具备了查询的基本条件了。
6.输入:
bin\searchd -c etc\csft_mysql.conf -a document
回车,意思是搜索包含document的所有匹配项。
首先需要了解:
num_matches: 当前返回的结果数,<= limit设置值。
max_matches: 最多返回的结果数,默认为1000,用户最多只能看到1000条搜索结果。这个是在csft_mysql.conf中设置的。
total_found: 结果总数。索引中所有满足查询条件的文档总数。这个是在你查询的返回结果中的数组中有的。当然前提是你必须在query前设置:$this->sc->SetArrayResult(true);
total: 最多返回结果数,取值取决于max_matches值和total_found值。如果total_found数超过max_matches,则total = max_matches,否则,total = total_found。这个也是在你查询的返回结果中的数组中有的。当然前提也是你必须在query前设置:$this->sc->SetArrayResult(true);
这样,了解了这几个属性之后就可以做分页了。
我们应该使用返回值中的total来做分页总数据。虽然这个不代表真实的返回值(当返回值大于max_matches,也就是1000,如真实返回2500,但是你却只能得到1000)。
代码是:
$this->sc->SetServer("127.0.0.1",9312);
$this->sc->SetArrayResult(true);
$this->sc->SetLimits($start,$page);
//如果需要搜索指定全文字段的内容,可以使用扩展匹配模式:
$this->sc->SetMatchMode(SPH_MATCH_ANY);
$res = $this->sc->Query($where,"main");
$count = $res['total'];
这个¥count就是我们要的分页的总数据了。
其他的后续怎么分页是以样式和数据结构做的,不能雷同,并且分页也是基础的东西,所以这里就不再多说分页的详细问题了。我这里单单讨论这个总数据的取值情况。因为很多人都取count($res['matches'])的值,但是这个是分页后的返回结果,你只能得到10,或者20或者其他的值。呵呵,那就搞笑了。