algolia和elasticsearch可以搜索,哪个好,php里边到底用哪个搜索

最近用laravel做项目,laravel自带的是algolia,可都说elasticsearch好,该用哪个

阅读 4.2k
3 个回答

我没有用过algolia,这好像是国外的一个在线搜索的东东,不论是algolia还是elastic,都是一件代价颇高的事情,如果需求只是使用分词等技术,建议使用:

Elastic

关于Laravelscout,新版的scout已经取消了Elastic的搜索支持。

主要原因是Elastic的搜索功能非常强大,可以组合多种方式,而laravel/scout反而会限制其强大的搜索功能,所以作者取消了对其的支持。

如果需要使用elastic

  • 直接使用elasticsearch/elasticsearch 会更有灵活(支持所有API),但是和Laravel关系的不紧密;
  • 或者使用作者的 https://github.com/fly-studio...,和Laravel无缝关联,并且可以使用ORM的搜索语法(大部分),比如:
    User::search()->whereIn('gender', ['male', 'female'])->where('name', 'match', '一段可以分词的文本')->get();

Elastic的强大是毋容置疑的,一个优秀的分析器、词库,基本上可以代替第三方搜索(比如百度等),
但是也带来高昂的硬件投入和很高代价的学习成本

  • 16G的内存只是Elastic的起步配置,并且非常容易占满;
  • Elastic需要投入大量的学习时间,学习其分析器、查询器;
  • 分析器是Elastic极为敏感和强大的配置,如果分析器、词库配置错误,会导致你根本搜索不到想要的内容。而重建一个分析器,只能重新建立索引(这一步是非常麻烦的);
  • 所以在设计索引模板时,需要足够的Elastic的知识储备,而是新手直接上。

不知道algolia,我说一下elasticsearch吧!
elasticsearch原生支持集群,可以避免单点故障。支持PB级的数据检索。es带有restapi,可以调用API和其交互。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题