Enterprise:网站搜索 - Elastic Site Search

本文介绍如何使用ElasticSiteSearch为网站添加搜索功能,包括创建搜索引擎、配置搜索UI及自定义搜索结果,提升用户体验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

随着你公司网站的内容不断地增加,网站不断地更新,你有没有发现查找你想要的内容越来越难了。一方面是内容是新的内容不断增加,另外一方面你之前保存的链接也由于网站的更新而不能使用了。你有没有想到想到为自己的网站添加一个搜索框,从而更加方便我们或者我们的客户来对我们的网站进行搜索。如果你这么想,那么Elastic Site Search将是你的答案。你无需做很多的工作,你只需要简单的配置就可以完成。剩下的工作就交给 Elastic 来完成。运用 Elastic Site Search,你所需要的就是提供一个你的网站的url,Elastic Site Search 对你的网站进行爬虫,并生产可以进行搜索的数据。

Elastic Site Search(以前称为 Swiftype 站点搜索)提供了构建强大的网站搜索所需的工具-无需学习。 免维护的搜寻器使内容保持最新,而直观的自定义功能和强大的分析功能可完全控制搜索的相关性。 所有这些都得到 Elasticsearch 的大规模支持。

你需要功能强大的搜索后端+设计良好的 UI。根据你网站的目的和规模,搜索可能是一项至关重要的功能,可使你的用户快速找到所需的信息。 Elasticsearch 使构建提供相关结果的搜索引擎变得更加容易,但是构建搜索后端只是实现搜索体验的工作的一部分。 没有直观的搜索界面,你的用户可能无法获得搜索引擎的全部价值。

Elastic Site Search(以前称为 Swiftype Site Search)将搜索作为一项服务来完全处理你的搜索引擎的后端,并且我们还帮助你构建设计良好的搜索UI。 网站搜索基于 Elastic Stack 构建,这使我们能够支持 10,000 多个生产搜索引擎,每月服务超过 50 亿个查询。 可以肯定地说,由于我们已经帮助 Lyft,AT&T,Twilio,Asana 和 Samsung 等大小公司提供一流的搜索体验,因此多年来我们已经在搜索方面学到了一两件事。 如果你想进一步了解 Swiftype 架构和弹性堆栈的使用,请查看这个“Swiftype's Technical Journey with Elasticsearch”。

Elastic Site Search 使用三个简单的步骤来进行搜索搜索。Elastic Site Search 使强大的搜索变得简单。 不是 “对高级开发人员来说简单” 简单,而是 “对任何人来说简单” 简单。 单击以进行爬网,拖放以进行调整。 看到? 简单。

输入你的网站地址,然后让功能强大的“Site Search”搜寻器处理其余的内容。在你的站点上执行几行代码,以添加一个由Elasticsearch驱动的搜索框。通过增强,权重和同义词来微调用户的搜索体验。

在接下来的教程中,我们将详细介绍如何来创建一个我们的 Site Search。

创建一个自己的网站

为了方面我们的展示,我创建一个我自己的网站。你可以按照如下的方法来下载网站的代码:

git clone https://github.com/liu-xiao-guo/the-example-app.nodejs

等我们下载完这个应用后,我们可以使用如下的命令来进行安装:

npm install

等安装好后,我们可以使用如下的命令来进行运行我们的服务器:

npm run start:dev

上面显示我们的服务器运行于 localhost 的 3000 端口上。我们在浏览器中输入 localhost:3000:

从上面我们可以看出来,我们已经成功地把服务器运行起来了。

这是一个基于 nodejs 的 express 框架的网站。为了能够使得我们的网站能够被 Site Search 的网站访问,我们可以把它置于一个公开的网上,并赋予一个可以访问的域名。针对我的情况,我使用 natapp.cn。选择一个自己喜欢的域名。我们可以把这个 nodejs 的应用置于自己的电脑上运行。对于一些开发者喜欢花生壳的,也可以参阅网站 贝锐官网-花生壳官网|DNS内网穿透|动态域名解析|域名注册|向日葵远程控制|远程桌面|蒲公英路由器|异地组网来做这个。你也可以使用工具 ngrok 来做相同的事。

我运行起我的 natapp 应用:

在上面,我们可以看到我们的 natapp 应用已经成功地把我们的 127.0.0:3000 映射到 http://liuxg.natapp1.cc 上了。我们在浏览器中输入你自己的 url:

在上面我们可以看出来我们的 url 已经成功地起作用了。

创建一个 Elastic Site Search 帐户并将你的数据编入 Swiftype

你可以通过开始免费的14天试用期进行注册。 在设置过程中,“Site Search” 将要求你输入你的 Web 网址。 你的域将被爬网,并且你的文档将被索引。

一旦我们成功地注册完,我们可以在地址 Swiftype 进行登录:

等我登录过后,我们可以看到如下的画面:

我们选择“Site Search”:

我们点击“CREATE A NEW ENGINE”按钮:

在上面填入我们的网站的 url。然后,我们点击 “VERIFY URL”:

我们输入想要的 Engine Name,并点击 “CREATE ENGINE” 按钮:

上面显示我们的 Engine 已经被成功地创建。我们可以点击 “Install Search” 菜单:

从上面的图中,我们可以看出来,我们的网站正被 Site Search 爬,正在建立索引。等我们的网页被爬完后, 我们可以看到如下的画面:

这个时候,我们点击 “Content” 菜单,我们可以看到:

从上面我们可以看出来我们的网站的内容已经被成功地爬完了,并已经建立了自己的索引。我们可以在上面的 Filter pages 的搜索框中来搜索我们想要的关键词,比如 Hello:

我们可以看到很多的链接都被罗列出来了。我们可以点击上面的 INSPECT 按钮:

我们可以点击上面的 VIEW DETAILS 按钮查看这个链接的详细信息。

在这里的其它的内容就留给大家自己来开发了。

为 Web 应用加上搜索框

到目前为止,我们所有的工作都在 swiftype.com 网站上完成,但是在大多数的情况下,我们其实更想把我们的搜索体验运用到我们的实际的Web应用中。我们想为我们的应用添加上一个搜索框。为此,我们按照教程 “jQuery Plugin Guide” 来做我们的练习。我们将实现一个最简单的搜索框来展示。我们打开我们的 nodejs 应用的文件 layout.pug。它位于:

$ ls views/layout.pug 
views/layout.pug

我们首先去掉下面被注释的3条语句:

上面的三天语句将为我们的每个页面创建一个搜索的输入框。同时为了能够使得我们的搜索框能够正确运行,我们必须首先在app.swiftype.com网站得到我们的Engine Key:

我们把这个 Engine Key 填入到 lib 目录下的 site_search.js 中:

$ ls lib/site_search.js 
lib/site_search.js

填入后的 site_search.js 是这样的:

$(function() {
  $('#st-search-input').swiftypeSearch({
    resultContainingElement: '#st-results-container',
    engineKey: 'YourEngineKey'
  });
});

我们重新运行我们的应用:

我们的应用显示的画面如上。这个时候我们在上面的搜索中输入我们想要的关键词,比如 hello:

我们可以在上面查看到当我们输入 hello 后,在我们的网页上出现了我们所搜索的一些结果,我们可点击其中的返回的结果。比如点击上面列表中的 “Hello SDKs - The Example App

显然这个是我们所搜索的结果的网页。

到目前为止,是你不是很酷啊!我们只做了很少的代码,但是对我们的网站的可用性大大提高了。

添加弹出式的展示结果

在上面我们把我们的搜索结果展示在网站的最上面。开发者可以通过CSS把这个框放到我们喜欢的位置来继续展示。这个就留给细心的开发者。在这节中,我们用另外一种展示的方法来展示搜索的结果。

我们可以在 lib 目录下找到一个叫做 options.js 的文件:

$ ls lib/options.js 
lib/options.js

这个文件的内容,我们可以从 app.swiftype.com 中来找到:

请注意上面的被红色圈住的地方。我们把那个部分的代码拷入到 options.js 文件中。注意的是不要拷贝 <script...> 及 </script> 部分。

我们同时修改 layout.pug,去掉被注释的两条语句。修改后的文件显示如下:

等修改完后,我们重新运行我们的服务器:

我们在上面输入“hello”,然后enter:

在上面,我们可以看到有一个弹出的框。里面含有我们搜索到的结果。我们可以点击其中的被搜索到的链接,比如上面的 Hello Contentful - The Example App:

自定义你的搜索结果

Elastic Site Search 使你可以基于查询逐个自定义搜索结果(结果排名),调整数据类型的权重(权重),并通过仪表板创建同义词组(同义词)。 要完全以编程方式控制搜索引擎的相关性,可以利用 Swiftype API

我们可以针对上面的各个字段进行加权,从而改变我们输出的结果的排序。我们也可以添加我们喜欢的字段进行调整。

我们也可以添加我们喜欢的同义词来进行搜索,比如,我们为hello添加一个同义词“你好”:

等我们在服务器端配置好后,我们立马可以在我们的客户端进行搜索了:

从上面我们可看出来:当我们输入 “你好” 后,我们立马可以查看到所有的 hello 相关联的文档。

参考:

【1】How to Build a Site Search UI | Elastic Blog

【2】jQuery Plugin Guide | Swiftype Documentation

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值