在网站开发中,很重要的一个功能那就是搜索了。对于一个访问量很大的网站来说,对于所有的搜索请求直接读取数据库来完成将会造成非常大的负荷。两种办法可以有效地解决以上问题,第一种就是缓存,memcached,redis等都很有名气,在这里就不予赘述了。
那么第二种就是使用云搜索。什么是云搜索?类似于CDN,我们把数据库内可以用于被搜索的信息推送至云端,然后用户在我们的网站进行搜索时,实际上搜索请求并没有发送给我们的服务器,而是被传递到云服务器进行搜索,并返回相应的结果。这样的解决方案可以大大降低网站的延迟,并提高应用的性能。现在比较有名的Algolia就提供了云搜索的服务。
具体办法是我们将数据库的信息以JSON的格式上传到Algolia服务器,然后通过相应的API进行搜索。搜索既可以是实时的(采用Javascript调用Algolia API),也可以是后端的(使用PHP调用Algolia API)。
注册 algolia 官网
注册成功后 在设置里面找到我们需要的API Keys
我们需要的是Application ID,Search-Only API Key和 Admin API Key。注意:Admin API KEY一定不要放在js里,因为这个key是用来上传,删除和操作我们的云端数据的,所以一定要保管好。
添加数据
const algoliasearch = require('algoliasearch');
// 输入自己的 application ID 和 admin API key
const client = algoliasearch('Application ID', 'Admin API Key');
// 名称为yu_ui
const index = client.initIndex('yu_ui');
// json数据
const json = require('./page');
// 添加到云服务器
index
.addObjects(json)
.then(() => {
console.log('success');
})
.catch(err => {
console.log(err);
});
查询数据
const algoliasearch = require('algoliasearch');
// 输入自己的 application ID 和 Search-Only API Key
const client = algoliasearch('Application ID', 'Search-Only API Key');
const index = client.initIndex('yu_ui');
index
.search({
query: '查询的内容'
})
.then(({ hits }) => {
console.log(hits);
})
.catch(err => {
console.log(err);
});