当前位置:Gxlcms > PHP教程 > sphinx查询问题

sphinx查询问题

时间:2021-07-01 10:21:17 帮助过:16人阅读

我现在有几个库,每个库都用sphinx建了不同的索引
但是查询就出问题了
比如说,我要从A库中查询所需内容
那我怎么来指定要查询哪个库的索引呢

这是我的coreseek配置
#音乐源定义source music{    type                    = mysql    sql_host                = localhost    sql_user                = root    sql_pass                =     sql_db                  = music    sql_port                = 3306    sql_query_pre           = SET NAMES utf8    sql_query_pre	    = REPLACE INTO sph_counter SELECT 1, MAX(id) FROM allmusic 		    sql_query               = SELECT id,`name`,`singer` FROM allmusic WHERE id<=(SELECT max_id FROM sph_counter WHERE  counter_id=1) #sql_query第一列id需为整数#name、singer作为字符串/文本字段,被全文索引       sql_query_info_pre      = SET NAMES utf8                                        #命令行查询时,设置正确的字符集    sql_query_info          = SELECT id,`name`,`singer` FROM allmusic WHERE id=$id #命令行查询时,从数据库读取原始数据信息}# music 的增量索引source mdelta:music{	sql_query_pre       = SET NAMES utf8	#sel_query_pre	    = REPLACE INTO sph_counter SELECT 1, MAX(id) FROM allmusic	sql_query           = SELECT id,`name`,`singer` FROM allmusic WHERE id<=(SELECT max_id FROM sph_counter WHERE  counter_id=1)}#小说源定义source novel{	type                    = mysql	sql_host                = localhost	sql_user                = root	sql_pass                = 	sql_db                  = novel	sql_port                = 3306	sql_query_pre           = SET NAMES utf8	sql_query_pre		= REPLACE INTO sph_counter SELECT 1, MAX(id) FROM novel			sql_query               = SELECT id,`name`,`author`,`is_small` FROM novel WHERE id<=(SELECT max_id FROM sph_counter WHERE  counter_id=1) #sql_query第一列id需为整数#name、singer作为字符串/文本字段,被全文索引	sql_attr_uint		= is_small	sql_query_info_pre      = SET NAMES utf8                                        #命令行查询时,设置正确的字符集	sql_query_info          = SELECT id,`name`,`img`,`des`,`content`,`is_small` FROM novel FROM allmusic WHERE id=$id #命令行查询时,从数据库读取原始数据信息}source ndelta:novel{	sql_query_pre       = SET NAMES utf8	#sel_query_pre	    = REPLACE INTO sph_counter SELECT 1, MAX(id) FROM novel	sql_query           = SELECT id,`name`,`author`,`is_small` FROM novel WHERE id<=(SELECT max_id FROM sph_counter WHERE  counter_id=1)	sql_attr_uint	    = is_small}#index定义index music{    source            = music            #对应的source名称    path              = E:/sphinx/music/ #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...    docinfo           = extern    mlock             = 0    morphology        = none    html_strip        = 0    #charset_dictpath = /usr/local/mmseg3/etc/ #BSD、Linux环境下设置,/符号结尾    charset_dictpath  = C:/usr/local/coreseek/etc/                           #Windows环境下设置,/符号结尾,最好给出绝对路径,例如:C:/usr/local/coreseek/etc/...    charset_type      = zh_cn.utf-8    min_prefix_len    = 0    min_infix_len     = 0    min_word_len      = 2    ngram_len         = 0    ngram_chars	      = U+4E00..U+9FBF, U+3400..U+4DBF, U+20000..U+2A6DF, U+F900..U+FAFF,\	U+2F800..U+2FA1F, U+2E80..U+2EFF, U+2F00..U+2FDF, U+3100..U+312F, U+31A0..U+31BF,\	U+3040..U+309F, U+30A0..U+30FF, U+31F0..U+31FF, U+AC00..U+D7AF, U+1100..U+11FF,\	U+3130..U+318F, U+A000..U+A48F, U+A490..U+A4CF}index mdelta:music{	source = delta	path            = E:/sphinx/music/delta}#index定义index novel{    source            = novel            #对应的source名称    path              = E:/sphinx/novel/ #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...    docinfo           = extern    mlock             = 0    morphology        = none    html_strip        = 0    #charset_dictpath = /usr/local/mmseg3/etc/ #BSD、Linux环境下设置,/符号结尾    charset_dictpath  = C:/usr/local/coreseek/etc/                           #Windows环境下设置,/符号结尾,最好给出绝对路径,例如:C:/usr/local/coreseek/etc/...    charset_type      = zh_cn.utf-8    min_prefix_len    = 0    min_infix_len     = 0    min_word_len      = 2    ngram_len         = 0    ngram_chars	      = U+4E00..U+9FBF, U+3400..U+4DBF, U+20000..U+2A6DF, U+F900..U+FAFF,\	U+2F800..U+2FA1F, U+2E80..U+2EFF, U+2F00..U+2FDF, U+3100..U+312F, U+31A0..U+31BF,\	U+3040..U+309F, U+30A0..U+30FF, U+31F0..U+31FF, U+AC00..U+D7AF, U+1100..U+11FF,\	U+3130..U+318F, U+A000..U+A48F, U+A490..U+A4CF}index ndelta:novel{	source = ndelta	path            = E:/sphinx/novel/delta}#全局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:/var/log/searchd_mysql.pid  #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...    log = E:/var/log/searchd_mysql.log        #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...    query_log = E:/var/log/query_mysql.log #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...    binlog_path =                                 #关闭binlog日志    compat_sphinxql_magics    = 0}


回复讨论(解决方案)

求高手指点啊

public array SphinxClient::query ( string $query [, string $index = "*" [, string $comment = "" ]] )

index
索引名称 (可以为多个,使用逗号分割,或者为“*”表示全部索引).

我现在有几个库,每个库都用sphinx建了不同的索引
但是查询就出问题了
比如说,我要从A库中查询所需内容
那我怎么来指定要查询哪个库的索引呢

这是我的coreseek配置

#音乐源定义source music{    type                    = mysql    sql_host                = localhost    sql_user                = root    sql_pass                =     sql_db                  = music    sql_port                = 3306    sql_query_pre           = SET NAMES utf8    sql_query_pre	    = REPLACE INTO sph_counter SELECT 1, MAX(id) FROM allmusic 		    sql_query               = SELECT id,`name`,`singer` FROM allmusic WHERE id<=(SELECT max_id FROM sph_counter WHERE  counter_id=1) #sql_query第一列id需为整数#name、singer作为字符串/文本字段,被全文索引       sql_query_info_pre      = SET NAMES utf8                                        #命令行查询时,设置正确的字符集    sql_query_info          = SELECT id,`name`,`singer` FROM allmusic WHERE id=$id #命令行查询时,从数据库读取原始数据信息}# music 的增量索引source mdelta:music{	sql_query_pre       = SET NAMES utf8	#sel_query_pre	    = REPLACE INTO sph_counter SELECT 1, MAX(id) FROM allmusic	sql_query           = SELECT id,`name`,`singer` FROM allmusic WHERE id<=(SELECT max_id FROM sph_counter WHERE  counter_id=1)}#小说源定义source novel{	type                    = mysql	sql_host                = localhost	sql_user                = root	sql_pass                = 	sql_db                  = novel	sql_port                = 3306	sql_query_pre           = SET NAMES utf8	sql_query_pre		= REPLACE INTO sph_counter SELECT 1, MAX(id) FROM novel			sql_query               = SELECT id,`name`,`author`,`is_small` FROM novel WHERE id<=(SELECT max_id FROM sph_counter WHERE  counter_id=1) #sql_query第一列id需为整数#name、singer作为字符串/文本字段,被全文索引	sql_attr_uint		= is_small	sql_query_info_pre      = SET NAMES utf8                                        #命令行查询时,设置正确的字符集	sql_query_info          = SELECT id,`name`,`img`,`des`,`content`,`is_small` FROM novel FROM allmusic WHERE id=$id #命令行查询时,从数据库读取原始数据信息}source ndelta:novel{	sql_query_pre       = SET NAMES utf8	#sel_query_pre	    = REPLACE INTO sph_counter SELECT 1, MAX(id) FROM novel	sql_query           = SELECT id,`name`,`author`,`is_small` FROM novel WHERE id<=(SELECT max_id FROM sph_counter WHERE  counter_id=1)	sql_attr_uint	    = is_small}#index定义index music{    source            = music            #对应的source名称    path              = E:/sphinx/music/ #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...    docinfo           = extern    mlock             = 0    morphology        = none    html_strip        = 0    #charset_dictpath = /usr/local/mmseg3/etc/ #BSD、Linux环境下设置,/符号结尾    charset_dictpath  = C:/usr/local/coreseek/etc/                           #Windows环境下设置,/符号结尾,最好给出绝对路径,例如:C:/usr/local/coreseek/etc/...    charset_type      = zh_cn.utf-8    min_prefix_len    = 0    min_infix_len     = 0    min_word_len      = 2    ngram_len         = 0    ngram_chars	      = U+4E00..U+9FBF, U+3400..U+4DBF, U+20000..U+2A6DF, U+F900..U+FAFF,\	U+2F800..U+2FA1F, U+2E80..U+2EFF, U+2F00..U+2FDF, U+3100..U+312F, U+31A0..U+31BF,\	U+3040..U+309F, U+30A0..U+30FF, U+31F0..U+31FF, U+AC00..U+D7AF, U+1100..U+11FF,\	U+3130..U+318F, U+A000..U+A48F, U+A490..U+A4CF}index mdelta:music{	source = delta	path            = E:/sphinx/music/delta}#index定义index novel{    source            = novel            #对应的source名称    path              = E:/sphinx/novel/ #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...    docinfo           = extern    mlock             = 0    morphology        = none    html_strip        = 0    #charset_dictpath = /usr/local/mmseg3/etc/ #BSD、Linux环境下设置,/符号结尾    charset_dictpath  = C:/usr/local/coreseek/etc/                           #Windows环境下设置,/符号结尾,最好给出绝对路径,例如:C:/usr/local/coreseek/etc/...    charset_type      = zh_cn.utf-8    min_prefix_len    = 0    min_infix_len     = 0    min_word_len      = 2    ngram_len         = 0    ngram_chars	      = U+4E00..U+9FBF, U+3400..U+4DBF, U+20000..U+2A6DF, U+F900..U+FAFF,\	U+2F800..U+2FA1F, U+2E80..U+2EFF, U+2F00..U+2FDF, U+3100..U+312F, U+31A0..U+31BF,\	U+3040..U+309F, U+30A0..U+30FF, U+31F0..U+31FF, U+AC00..U+D7AF, U+1100..U+11FF,\	U+3130..U+318F, U+A000..U+A48F, U+A490..U+A4CF}index ndelta:novel{	source = ndelta	path            = E:/sphinx/novel/delta}#全局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:/var/log/searchd_mysql.pid  #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...    log = E:/var/log/searchd_mysql.log        #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...    query_log = E:/var/log/query_mysql.log #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...    binlog_path =                                 #关闭binlog日志    compat_sphinxql_magics    = 0}



按索引名来来查询,不是指定库,sphinx搜索和数据库没有关系

$cl = new SphinxClient ();$cl->SetServer ('localhost', '9312');$res = $cl ->Query ( '我', "novel" );


http://docs.php.com/manual/zh/sphinxclient.query.php

人气教程排行