sphinx查询问题

shuiping567541 2013-05-08 01:36:03
我现在有几个库,每个库都用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
}
...全文
297 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
baidu_33515192 2015-12-26
  • 打赏
  • 举报
回复
jaksmine 2013-05-10
  • 打赏
  • 举报
回复
引用 楼主 shuiping567541 的回复:
我现在有几个库,每个库都用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.net/manual/zh/sphinxclient.query.php
sdsuper 2013-05-10
  • 打赏
  • 举报
回复
public array SphinxClient::query ( string $query [, string $index = "*" [, string $comment = "" ]] ) index 索引名称 (可以为多个,使用逗号分割,或者为“*”表示全部索引).
shuiping567541 2013-05-08
  • 打赏
  • 举报
回复
求高手指点啊

20,359

社区成员

发帖
与我相关
我的任务
社区描述
“超文本预处理器”,是在服务器端执行的脚本语言,尤其适用于Web开发并可嵌入HTML中。PHP语法利用了C、Java和Perl,该语言的主要目标是允许web开发人员快速编写动态网页。
phpphpstorm 技术论坛(原bbs)
社区管理员
  • 开源资源社区
  • phpstory
  • xuzuning
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧