sphinx 在多表的情况下如何检索出具体数据 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
MySQL 5.5 Community Server
MySQL 5.6 Community Server
Percona Configuration Wizard
XtraBackup 搭建主从复制
Great Sites on MySQL
Percona
MySQL Performance Blog
Severalnines
推荐管理工具
Sequel Pro
phpMyAdmin
推荐书目
MySQL Cookbook
MySQL 相关项目
MariaDB
Drizzle
参考文档
http://mysql-python.sourceforge.net/MySQLdb.html
letitbesqzr
V2EX    MySQL

sphinx 在多表的情况下如何检索出具体数据

  •  
  •   letitbesqzr 2014-08-11 16:20:15 +08:00 6592 次点击
    这是一个创建于 4153 天前的主题,其中的信息可能已经有所发展或是发生改变。
    在sphinx.conf里面定义了多个sourc对应多个index (每个index对应一个source)
    看了半天文档,只发现有一个 sql_query_info的参数,设置为:
    ```
    sql_query_info = select * from `表名` where id = $id
    ```

    但发现只在search.exe也就是cmd测试下才会去执行...用api调用不会执行这个..
    看到网上的例子,都是通过查询出来的id值然后链接mysql去查询...我这每个表的名字都没有规律,id值也没有规律..请问有没有办法能让api调用输出的时候带上是哪个source的结果..或者直接能输出其他字段的内容,而不是只输出id
    17 条回复    2014-08-12 12:28:54 +08:00
    bjzhush
        1
    bjzhush  
       2014-08-11 16:24:12 +08:00   1
    我之前做的是所有表的主键id都是连续的
    比如 data_1 1-100W
    data_2 100W-200W
    data_3 200W-300W
    这样检索出来id,就知道结果在哪个表了
    bjzhush
        2
    bjzhush  
       2014-08-11 16:25:44 +08:00   1
    以上我的做法是1个index对应多个source的
    如果是1个source对应1个index,其实source的表名就是确定了的,各自分别配置就可以了
    不过分的太多了,估计你查询起来不是太方便吧?
    letitbesqzr
        3
    letitbesqzr  
    OP
       2014-08-11 16:33:00 +08:00
    @bjzhush 我这大概12亿数据... 我试了 所有source分在一起..但 查询的时候检索不完,不知道为啥 只能查到第一个 source ..
    letitbesqzr
        4
    letitbesqzr  
    OP
       2014-08-11 16:33:41 +08:00
    @bjzhush 通过api查询 有办法得到某条数据是属于哪个source的么?
    bjzhush
        5
    bjzhush  
       2014-08-11 16:39:26 +08:00
    @letitbesqzr 这个项目我是去年做的了,用的是PHP的Sphinx API
    具体数据里面有没有,我临时搜索了下
    根据 http://php.net/manual/en/sphinx.examples.php 貌似是没有来自哪个source的
    letitbesqzr
        6
    letitbesqzr  
    OP
       2014-08-11 16:41:24 +08:00
    @bjzhush 貌似...真就...没办法了
    bjzhush
        7
    bjzhush  
       2014-08-11 16:56:41 +08:00
    @letitbesqzr 我觉得你做搜索了,数据却没有做好搜索的准备
    加个全局UUID字段或许可以,不过非主键估计比较麻烦
    另外就是单独copy出来提供给sphinx做数据源,不过又出现了维护,数据更新同步的额外开销..
    letitbesqzr
        8
    letitbesqzr  
    OP
       2014-08-11 17:00:22 +08:00
    @bjzhush "密码查询网站" 之类的东西,你懂得... 每个表是一个网站的数据.. 不需要更新 维护 请问有什么方案来做?
    bjzhush
        9
    bjzhush  
       2014-08-11 17:02:26 +08:00
    @letitbesqzr 我去年做的就是这个...
    SheGongKu...
    当时放了3亿数据进去,速度非常快
    要不我打包卖你好了 ^_^ 包括查询整套代码,价格好说
    letitbesqzr
        10
    letitbesqzr  
    OP
       2014-08-11 17:09:40 +08:00
    @bjzhush 算了 - - 我12亿呢..加上soyun的没导入..估计有15e
    bjzhush
        11
    bjzhush  
       2014-08-11 17:15:29 +08:00
    你建400个表,分4组,每表1KW数据,也就是每组10亿数据,直接复制批量修改配置文件就OK了
    这玩意要的是匹配,所以分开索引分开查是没问题的,你真的不要? 拿到就能直接导数据用哦,很便宜哦,哈哈
    letitbesqzr
        12
    letitbesqzr  
    OP
       2014-08-11 17:16:38 +08:00
    @bjzhush 但我这... 怎么能做到每表1Kw数据...
    bjzhush
        13
    bjzhush  
       2014-08-11 17:21:12 +08:00
    @letitbesqzr 每表1KW数据,为什么不是100W,为什么不是1亿 ?
    因为这是Mysql的瓶颈临界值
    数据往里导入就是了,11位int能放多少数据你自己算
    你搞过这个没有?
    bjzhush
        14
    bjzhush  
       2014-08-11 17:21:37 +08:00
    @letitbesqzr 还是不在这扯了,和谐...
    letitbesqzr
        15
    letitbesqzr  
    OP
       2014-08-11 17:35:19 +08:00
    @bjzhush 实在不行,只有这样了,,,既然我每个表一个index...我就定义一个数组 - - 然后遍历数组挨个index去取数据吧...
    bjzhush
        16
    bjzhush  
       2014-08-12 08:42:14 +08:00
    @letitbesqzr 那样你检索还有整合结果会非常麻烦,而且整合后结果混乱无序.....
    唉,浪费这么多时间瞎折腾,就是一毛不拔
    letitbesqzr
        17
    letitbesqzr  
    OP
       2014-08-12 12:28:54 +08:00
    @bjzhush 怎么会.... 直接foreach 循环就可以了,每个表都是带有来源字段的... 已经完成了.. 不过内存占用有点大.. 19亿数据了 占用了 启动searchd 占用了 30g内存.. 但检索都在一秒内
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3176 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 46ms UTC 11:01 PVG 19:01 LAX 03:01 JFK 06:01
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86