weixin_42297910
2008-11-06 07:37
浏览 273
已采纳

Sphinx搜索引擎能否取代memcached?

有没有人做过sphinx并发搜索的测试或者有相关经验的。想了解一下如果使用sphinx分布式索引,放在4-5台linux服务器上,在千万级数据量时其并发搜索速度如何?在没有memcached的情况下能支撑住多大的并发访问量?

如果使用memcached缓存数据库数据的话,sphinx可以在系统中扮演什么样的角色?对整个系统能有什么样的提高?

只使用memcached缓存数据库数据,只适用sphinx和同时使用memcached和sphinx3个方案之间哪个方案在硬件和维护上更加经济?

谢谢。
[b]问题补充:[/b]
是不是可以这样考虑:sphinx作为搜索引擎,通过条件得到Key。然后再用key从数据库或者memcache里面取得具体数据。在这种情况下使用memcache可以减少数据库的访问而提高速度。但是作为条件检索memcache不是很合适。
[b]问题补充:[/b]
使用sphinx或者lucene的目的就是使站点达到以全文搜索为主。命中率似乎和细节更加相关,而不是架构问题。我想了解的是这样的架构的可行性以及效率如何。

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

5条回答 默认 最新

  • iteye_20231 2008-11-15 13:48
    已采纳

    我想楼主对这两个的理解有偏差.
    memcached不是做全文搜索.是做缓存的.
    如果你要的是全文搜索,那sphinx可以选择.
    如果你想把高搜索词汇的结果缓存起来不用再次调用sphinx那可以用memcached.
    不过sphinx虽然也是一个服务器,我记得好像没有缓存机制,因为像这样的搜索引擎设计的时候都是以T为单位来测试搜索速度的,没有必要做缓存,这也不应该是一个搜索引擎应该负责的事情,应该是memcached负责的事情.

    点赞 评论
  • iteye_2429 2008-11-06 10:53

    没作过,不过应该与lucene作用相同.

    memcache与sphinx不在一个层面上
    memcache缓存的是一个map
    如果没有key怎么也得不到value,
    相同的key也只能得到相同的value.
    不方便进行查寻.
    对硬件要求还是要看访问量与使用策略的命中率
    选择命中高的策略就可以了.

    [quote]1. Sphinx简介

    1.1. 什么是全文检索
    全文检索是指以文档的全部文本信息作为检索对象的一种信息检索技术。检索的对象有可能是文章的标题,也有可能是文章的作者,也有可能是文章摘要或内容。

    1.2. 介绍
    Sphinx是一个基于SQL的全文检索引擎,可以结合 MySQL,PostgreSQL做全文搜索,它可以提供比数据库本身更专业的搜索功能,使得应用程序更容易实现专业化的全文检索。Sphinx特别为一些脚本语言设计搜索API接口,如PHP,Python,Perl,Ruby等,同时为MySQL也设计了一个存储引擎插件。

    1.3. Sphinx的特性
    高速索引 (在新款CPU上,近10 MB/秒);
    高速搜索 (2-4G的文本量中平均查询速度不到0.1秒);
    高可用性 (单CPU上最大可支持100 GB的文本,100M文档);
    提供良好的相关性排名
    支持分布式搜索;
    提供文档摘要生成;
    提供从MySQL内部的插件式存储引擎上搜索
    supports boolean, phrase, and word proximity queries;
    支持每个文档多个全文检索域(默认最大32个);
    支持每个文档多属性;
    支持断词;
    支持单字节编码与UTF-8编码;
    supports English stemming, Russian stemming, and Soundex for morphology;
    支持MySQ(MyISAM和InnoDB 表都支持);
    支持PostgreSQL.[/quote]

    点赞 评论
  • iteye_2429 2008-11-06 15:51

    请求
    [code="java"]
    memcache
    ||
    Sphinx===== mysql[/code]

    点赞 评论
  • iteye_2429 2008-11-06 15:53

    这个方案也不是很好
    主要是你看怎么样提高命中

    点赞 评论
  • iteye_2429 2008-11-10 09:00

    答案只有一个是确定的,就是靠试.
    每种方法都实现后用真实的数据去试.
    不要妄想一次作对.
    别人的数据只能作个参考.
    http://www.iteye.com/topic/77560

    点赞 评论

相关推荐 更多相似问题