衷心感谢改版期间大家给予的帮助和体谅

微信登录

微信登录

因恶意注册过多,目前只支持微信模式

网站搜索功能正式上线了

作者:Codinget
2018. 11. 15

编程原力 Algolia

今天克服了一下懒癌症状,折腾了差不多两个小时把网站的 搜索功能 添加上了,估计肯定是有问题的,期待在后续的使用中接受大家的反馈吧。我也没有实现太复杂的功能,基本就是非常简单的搜索,应该能够满足目前这个阶段大家对于网站搜索的需求。我之前也比较担心Algolia 是国外的搜索服务,速度可能会比较慢,但是似乎使用起来也还不错,我觉得能够达到我心里的预期。

在国内有非常多的网站,包括一些知名的资源类网站或是论坛网站,对搜索都是有限制的,不能频繁搜索,一分钟可能会限定在6次之内,主要就是因为是在本地服务器搭建的搜索环境,更恐怖的方式就是直接模糊匹配数据库中的数据,然后返回搜索结果。这样的方式在很多开源的 CMS 系统或者论坛系统中非常常见,数据量小的时候没啥问题,多了之后,搜一次东西就像化疗一次一样,一群人同时搜点东西真的能把数据库给整死,因此不得不对搜索次数做限制,而且匹配的数据也很难做到比较好的模糊匹配和识别。

后来出现了专门服务于搜索的工具和服务,比如大名鼎鼎的 ElasticSearch,用专业的方式构建索引数据,让关键词 的精准匹配和模糊匹配都做到了非常高的水准;另一方面是不再直接搜索数据库的数据,避免了搜索数据库导致数据库崩溃的惨剧,但是这类搜索工具的搭建却比较麻烦,使用起来也并不是那么方便。由于仍然是要部署在服务器中,还是要消耗服务器的计算资源。

如果你搜索 站内搜索 的话,应该能看到不少站内搜索的产品,百度啊,360啊等等都有自己的站内搜索解决方案,这类产品简单易用,非常容易搭建。对于英文不好的同学来说,使用站内搜索工具实现搜索功能会非常轻松,而且搜索的时候也不消耗自身服务器的资源,是个不错的选择。缺点就是页面风格无法定制成我们想要的样子,而且强行捆绑了 百度 或者 360 搜索服务,对于颜控或者有品质要求的人来说,可能接受不了它的显示样式。

最后呢,我选择了 Algolia,说实话,如果不是接触了 Laravel ,我压根就不知道这货的存在。最近两三年这货的发展速度也着实惊人,我一直依赖对她也并不信任,但是要想短时间内添加上搜索功能并且与 Laravel 系统无缝连接的话,它真的是首选。它也能让搜索页面和网站保持相同的调调,想怎么定制就怎么定制,这一点我喜欢。但是使用 Algolia 真的有坑啊:

1. 中文分词的问题

不支持中文分词,多年来我特别在意 中文分词 这个事儿,但是也恰恰是经过了这么多年的洗礼,我的态度也慢慢发生了变化,我已经不那么看重中文分词了,它不是想象中的那么重要,人们总在用各种手段和角度做分词,但是其实最好的算法和处理方式不在机器上,而是在人。使用者看到搜索结果后很自然的就会用自己的大脑对信息进行筛选,进行关键词匹配和垃圾信息、干扰信息的快速区分,人才是最聪明的,所以这次我放弃 中文分词,考验大家的信息处理能力了

2. Algolia 有免费和付费服务两种,免费的服务对索引的数量和索引内容的字数有限制

比如一篇文章字数太多,那就索引不了了,不光索引不了,上传数据的时候还直接崩溃,导致后面的数据即便没有超过限制仍然无法上传索引数据;

 

OK,添加了搜索,算是 Coding10 的一个小进步,希望大家用的 Happy ,写这篇博客写了老半天,看来晚睡在所难免了 ~

西门撸码 2018.11.15 09:00

我看着效果挺好的,之前也看过 Algolia,都是英文,我搞不定

codinget 2018.11.15 09:06

加上搜索之后我也觉得网站完整多了,国外的开发者尤其英语系的,比咱们幸福,Algolia 确实高效。英文不好其实没关系,Algolia 的操作非常简单

Levy 2020.03.26 05:25

站长,抽空出一个laravel 结合阿里云opensearch 的视频教程吧,感谢!

codinget 2020.03.26 05:59

OpenSearch 属于收费的搜索服务,还真的没用过,是不是还必须得用它的付费数据库啊 ???

Levy 2020.03.27 05:17

是的,目前只支持阿里云的ODPS、RDS数据源对接。

codinget 2020.03.27 05:27

哈哈,那就自己上吧,也没啥难的,这个我就不录视频了,面向的人或者公司太窄了。

Levy 2020.03.27 05:31

laravel 第三方类的引用有视频教程吗?比如说微信对接、支付宝对接的视频教程。其他的可以举一反三。有的话发一下学习连接,感谢站长!

codinget 2020.03.27 05:34

你知道API怎么开发,这个不难的,无非就是接口调用,传参,分析返回结果,获取自己想要的结果,都是这个套路。网站有搜索功能,想找啥自己搜吧。

Levy 2020.03.27 05:43

建议看站里的那个视频会对这个对接有帮助呢?搜索不到支付相关视频,所以谢谢站长发一下,感谢!

codinget 2020.03.27 05:48

你太懒了,搜索在线支付或者支付后在课程选项卡里第一项不就是吗? 你要做搜索功能,先用用我的搜索好不好

Levy 2020.03.27 05:51

好吧,找到了。建议把视频类目放到博客类目的前面,这样不容易被忽略。 当我搜索支付,当前页看到的是博客,没有去点击视频。就被忽略为没有视频教程了。 所以建议站长,搜索默认显示视频结果列表。

一口老血 2018.11.15 09:11

专程来看你是不是完成了搜索功能,感觉还行,看来我对 Algolia 的偏见有点过了,但是我曾经用它做实验的时候遇到过问题,就是你说的第二个问题,文章长了就直接报错,不继续索引后面的文章了,我们解决不了,在网上也没找到解决方法,最后放弃了 Algolia 方案,你怎么解决的这个问题啊?

codinget 2018.11.15 09:24

我耍了个小聪明,如果文章太大,超过了 Algolia 大小限定值,我就截断文章的数据,毕竟如果购买 Algolia 服务的话,真的不便宜

kobe 2018.11.15 12:05

使用 Algolia 做搜索你也录套视频吧,我挺感兴趣的,官网介绍的太简单了,而且正好把你遇到的坑也说一下

codinget 2018.11.25 11:13

这个其实挺简单的,只是很多人英语不好,导致对Algolia心里有点排斥

八哥 2018.11.25 11:11

登陆之后发现了惊喜,不显示默认的 logo 了,显示的是我的头像,还多了一个消息系统

codinget 2018.11.25 11:12

是的,把网站细节上又重新设计了一下,以方便大家为最大原则

八哥 2018.11.25 11:14

挺好,我越来越喜欢这里了

找一条适合自己的路,坚持走下去
编程原力 京ICP备17045322号-2
版权所有, 侵权者追究法律责任