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

2016-07-26 17:32:54 +08:00
 wannianma

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

15057 次点击
所在节点    PHP
66 条回复
miaotaizi
2016-07-26 17:37:19 +08:00
xunsearch
dong3580
2016-07-26 17:41:16 +08:00
solr
jugelizi
2016-07-26 17:42:32 +08:00
代码可以参考 phpcms 的 sphinx
acrisliu
2016-07-26 17:48:32 +08:00
elasticsearch
wannianma
2016-07-26 17:50:18 +08:00
@miaotaizi 谢谢,我研究一下!
wannianma
2016-07-26 17:54:37 +08:00
@dong3580 solr 只是听说过,会不会太重了?
sinux
2016-07-26 17:57:17 +08:00
@acrisliu es 感觉中文分词库没有太好的.....
2owe
2016-07-26 17:59:29 +08:00
用过 Coreseek ,基于 Sphinx ,有索引大小限制: 4G ,超过的话得自己搭分布式。官网最近挂了,但网上还能找到很多资料,用起来难度不大。

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

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

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

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


===

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

后面如果还会有爆发到上亿规模,还是老老实实上 es 吧。
wmttom
2016-07-26 20:13:53 +08:00
elasticsearch + 1

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/295071

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX