wannianma
V2EX  ›  PHP

站内全文搜索采用什么方案比较快?

  •  
  •   wannianma · Jul 26, 2016 · 16635 views
    This topic created in 3753 days ago, the information mentioned may be changed or developed.

    现在站点的内容到达了百万的量,突然发现原来基于 like 的站内搜索已经奇慢无比了,在网上搜了一下好像Sphinx是一种可行的方案,但还是有些纠结。希望大家帮忙提供一下思路

    66 replies  •  2018-12-15 18:22:41 +08:00
    miaotaizi
    miaotaizi
    Jul 26, 2016
    1
    xunsearch
    dong3580
    dong3580
    Jul 26, 2016
    2
    solr
    jugelizi
    jugelizi
    Jul 26, 2016
    3
    代码可以参考 phpcms 的 sphinx
    acrisliu
    acrisliu
    Jul 26, 2016
    4
    elasticsearch
    wannianma
    wannianma
    OP
    Jul 26, 2016
    5
    @miaotaizi 谢谢,我研究一下!
    wannianma
    wannianma
    OP
    Jul 26, 2016
    6
    @dong3580 solr 只是听说过,会不会太重了?
    sinux
    sinux
    PRO
    Jul 26, 2016
    7
    @acrisliu es 感觉中文分词库没有太好的.....
    2owe
    2owe
    Jul 26, 2016
    8
    用过 Coreseek ,基于 Sphinx ,有索引大小限制: 4G ,超过的话得自己搭分布式。官网最近挂了,但网上还能找到很多资料,用起来难度不大。

    我用的数据源是 MySQL ,索引的字段内容都不大。

    关于使用,我觉得用起来还是挺简单的。用的 PHP 哈。其实代码实现上, XunSearch , Solr , Elestic 都差不多。

    关于搜索结果,一看分词。 Coreseek 自带中文分词,我觉得用起来还行(比 XunSearch 自带的好一点), Apache 系的这俩没正式用过,听说分词效果可以调到不错的样子。二看条件过滤, Coreseek 用起来简直像在用搜索速度快很多的 MySQL 。话说,别的用起来也差不多吧。

    关于资源占用,感觉内存占用不高,与量有关,与实体索引文件对比大约是: 1vs1 。


    ===

    关于搜索的话题,我也仅仅是浅尝辄止,欢迎讨论哈。
    wannianma
    wannianma
    OP
    Jul 26, 2016
    9
    @sinux 做科研的人其实整理除了一些不错的中文词库,中科院的 ICTCLAS 之前用过听不错。但是中文新词更新太快,词库根本没法做到百分百覆盖
    wannianma
    wannianma
    OP
    Jul 26, 2016
    10
    @jugelizi 谢谢
    HarveyDent
    HarveyDent
    Jul 26, 2016
    11
    我们用的是阿里云提供的搜索。
    lijinma
    lijinma
    Jul 26, 2016
    12
    有钱可以用 阿里云 的 OpenSearch
    xujif
    xujif
    Jul 26, 2016❤️1
    13
    百万级别直接用数据库的分词搜索足够。 mysql 的 match against pg 的 ts_query
    wannianma
    wannianma
    OP
    Jul 26, 2016
    14
    @xujif 第一次接触,研究一下!
    xiaoz
    xiaoz
    Jul 26, 2016 via iPhone
    15
    反代谷歌, site 搜索
    wannianma
    wannianma
    OP
    Jul 26, 2016
    16
    @xiaoz 之前也考虑过使用百度进行搜索,但是感觉定制性较差
    dong3580
    dong3580
    Jul 26, 2016
    17
    @wannianma
    还好,耗 RAM 大户.
    你可以参考它的思想,
    tracymcladdy
    tracymcladdy
    Jul 26, 2016
    18
    solr+1
    9nix00
    9nix00
    Jul 26, 2016
    19
    百万这个级别,如果是一般的网站应用,单台 sphinx+redis 毫无压力。

    后面如果还会有爆发到上亿规模,还是老老实实上 es 吧。
    wmttom
    wmttom
    Jul 26, 2016
    20
    elasticsearch + 1
    rale
    rale
    Jul 26, 2016
    21
    elasticsearch + 1
    lyc1116
    lyc1116
    Jul 26, 2016
    22
    solr, 或者可以试试 AWS 的 elasticsearch ,但是中国区还不支持。
    pango
    pango
    Jul 26, 2016
    23
    搭车问一下繁体中文(台湾)有没有什么好的分词词库,最好直接能拿来搭配 sphinx 的 python api 用的?
    batis25
    batis25
    Jul 26, 2016
    24
    elasticsearch
    laravel
    laravel
    Jul 26, 2016
    25
    elasticsearch + 1
    dodo2012
    dodo2012
    Jul 27, 2016
    26
    es+1
    strwei
    strwei
    Jul 27, 2016
    27
    sphinx+1
    kn007
    kn007
    Jul 27, 2016
    28
    mark ,用过 sphinx ,一般
    zael
    zael
    Jul 27, 2016
    29
    没人用 hibernate search 吗?

    PS @Livid 回复快捷键貌似失效了
    ctrl/command+enter chrome 浏览器
    lszxlong
    lszxlong
    Jul 27, 2016
    30
    elasticsearch 好用,非常方便
    wannianma
    wannianma
    OP
    Jul 27, 2016
    31
    @xujif 试了一下, mysql 加了全文索引,果然提升很明显!
    simapple
    simapple
    Jul 27, 2016
    32
    mysql 5.7 innodb 支持中文全文索引
    nightspirit
    nightspirit
    Jul 27, 2016
    33
    mysql 5.6 就支持全文索引了
    lawmil
    lawmil
    Jul 27, 2016
    34
    elasticsearch 这个比较靠谱
    dqh3000
    dqh3000
    Jul 27, 2016
    35
    @wannianma 试过 postgres + tsquery ( tsvector , td_rank ) + gin 索引

    百万级别的文本,内容是小说,没有问题
    tabris17
    tabris17
    Jul 27, 2016
    36
    elasticsearch + 2
    mrytsr
    mrytsr
    Jul 27, 2016 via Android
    37
    es
    xujif
    xujif
    Jul 27, 2016
    38
    @wannianma 好用就行,报个搜索时间?
    server
    server
    Jul 27, 2016
    39
    es 吧,给你提供的不仅仅是全文检索
    huangzxx
    huangzxx
    Jul 27, 2016
    40
    elasticsearch 吧
    ljbha007
    ljbha007
    Jul 27, 2016
    42
    中小型网站用 postgresql 自带的 fts 配合中文分词插件就够了
    derek80
    derek80
    Jul 27, 2016
    43
    elasticsearch +1
    towser
    towser
    Jul 27, 2016
    44
    千万级 coreseek
    更多 elasticsearch
    hwsdien
    hwsdien
    Jul 27, 2016
    45
    直接上 Elasticsearch
    minongbang
    minongbang
    Jul 27, 2016
    46
    http://itzdm.com/ 我这个用的 xunsearch
    hyiier
    hyiier
    Jul 27, 2016
    47
    xunsearch 不需要解决中文分词的问题,我的网站就是用 xunsearch 做的全站搜索 www.yii-china.com 可以来看看效果
    fengkuok
    fengkuok
    Jul 27, 2016
    48
    百万级别难道没人用 PostgreSQL 的全文检索吗?当然,一次性到位的话还是用 ES 靠谱。
    Reign
    Reign
    Jul 27, 2016 via Android❤️1
    49
    说句 v2 政治不正确的话,我一直觉得 elasticsearch 真的是炒作出来的东西,坑实在太多,我每次用都气的想把我的显示器砸了
    slixurd
    slixurd
    Jul 27, 2016
    50
    @Reign 例如 ES 自己作死加了个 Type....
    你遇到什么坑了,说来听听....学习一下
    defunct9
    defunct9
    Jul 27, 2016
    51
    @slixurd 为毛不加 Type ?加了 type 好断词吧
    fork3rt
    fork3rt
    Jul 27, 2016
    52
    sphinx 挺好用的,文档也全。
    slixurd
    slixurd
    Jul 27, 2016
    53
    @defunct9
    因为 Lucene 里面没有 Type 这种东西, ElasticSearch 的 Type 实际上是在整个搜索的外层加了个一个 BooleanQuery ,然后把 Type 作为一个 Filter 条件放进去搜索的伪 Type ,另外由于 5_4_x 的 BUG ,会导致性能变差大概 20%( 5_5 修复了这个问题
    defunct9
    defunct9
    Jul 27, 2016
    54
    @slixurd 没用过 lucene ,这样就只好自己写 java 的 lucene 了。比起来还是用 e 吧。
    tianshiyeben
    tianshiyeben
    Jul 27, 2016
    55
    elasticsearch
    wuhang89
    wuhang89
    Jul 27, 2016
    56
    elasticsearch+1
    jimmy0017
    jimmy0017
    Jul 27, 2016
    57
    elasticsearch 不错。但没试过
    zwh8800
    zwh8800
    Jul 27, 2016
    58
    elasticsearch 不错, RESTful 的 api ,用着很舒服
    fire5
    fire5
    Jul 27, 2016
    59
    Elasticsearch
    loveyu
    loveyu
    Jul 27, 2016
    60
    Elasticsearch 面对产品神奇的需求就是个渣渣
    hard2reg
    hard2reg
    Jul 27, 2016
    61
    google site:xxx.com keyword
    jswh
    jswh
    Jul 28, 2016
    62
    @defunct9 elasticsearch 用的是 Lucene 的引擎,索引用 es 就可以了
    jason19659
    jason19659
    Jul 28, 2016
    63
    elastic 5.0
    kwklover
    kwklover
    Jan 2, 2018
    64
    可以试试搜易站内搜索引擎 http://www.searcheasy.net
    完全无需开发,点点鼠标完成站内搜索
    echope
    echope
    Nov 19, 2018
    65
    没想到两年后用 es...
    huobazi
    huobazi
    Dec 15, 2018
    66
    @slixurd
    @defunct9

    然鹅,type 又作死的要去掉了
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2534 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 119ms · UTC 14:53 · PVG 22:53 · LAX 06:53 · JFK 09:53
    ♥ Do have faith in what you're doing.