Enterprise:Web Crawler 基础 (二)
2021年11月5日 | by mebius
在之前的文章 “Enterprise:Web Crawler 基础 (一)”,我详细地描述了如何使用 Web crawler 把一个网页的数据采集到 Elasticsearch 中。在今天的文章中,我将继续上一篇文章中的练习。在这篇文章中,我将重点介绍 Enterprise App Search 的几大特点:
- Relevance
- Curations
- Synonyms
创建一个搜索界面
现在你已经将 www.elastic.co 网站上的所有英文博客摄入入索引,你可以 建立一个搜索界面,让你的用户可以在博客中进行有效的搜索。
1)在上一节中,你学习了如何通过 “Query Tester” 界面进行搜索。 这是一个 快速搜索文档的便捷方式,但它并没有为你提供所有你期望从搜索界面获得的功能。 你还需要有自动完成功能, 建议,或分面。 转到 “SearchUI” 以创建自定义界面。
2. 在此视图中,您可以定义将在搜索 UI 中使用的字段。 选择以下字段:
- 为 title 项选择 title
- 为 filter 项选择 headings
- 为 sort 项选择 title
- 为 URL 项选择 url
3)点击 Generate search experience
我们会发现界面的输入框会自动具有 auto-complete 功能。这些提示都是来自于你建立的引擎。你无需做任何的设置。
点击第一结果的超链接:
它会自动重定向到文章的链接。
我们点击 Search UI 右上角的 Download ZIP Package 按钮。这将生成一个 ZIP 文件,其中包含您可以在应用程序中使用的源代码。我们下载这个 zip 文件。我们可以在本地部署这个 node 应用:
$ pwd
/Users/liuxg/tmp/search-ui
$ ls app-search-blogs-react-demo-ui.zip
app-search-blogs-react-demo-ui.zip
$ unzip app-search-blogs-react-demo-ui.zip
Archive: app-search-blogs-react-demo-ui.zip
212b452f21c60fcfbb26fcbfc619708784a6e650
inflating: .gitignore
extracting: .nvmrc
inflating: LICENSE.txt
inflating: NOTICE.txt
inflating: README.md
creating: bin/
inflating: bin/ensure_engine_config.sh
inflating: logo-app-search.png
inflating: package-lock.json
inflattgcodeing: package.json
creating: public/
inflating: public/favicon.ico
inflating: public/index.html
inflating: public/manifest.json
creating: scripts/
inflating: scripts/build-no-chunks.js
creating: src/
inflating: src/App.js tgcode
creating: src/_tests_/
inflating: src/_tests_/App.test.js
creating: src/config/
inflating: src/config/config-helper.js
inflating: src/config/engine.json.example
inflating: src/index.js
inflating: src/config/engine.json
请注意在上面解压的文档里有一个叫做 README.md 的文档。它告诉我们该如何启动这个 node 应用。如果你在启动的过程中有任何问题,这极有可能是你的 node 的配置或按照有问题。一种简单的办法就是重新安装你的 node,然后在重新运行这个 node 应用。我们可以通过如下的方式来运行:
npm install
npm start
上面是我在 ubuntu 机器上部署并运行的结果。
调整搜索引擎
你现在可以搜索博客。 但是,你可以通过调整搜索引擎更进一步。 在本节中,你将学习如何更改查询的相关性、设置
同义词,并定义 curation。我们回到 App Search 的界面:
1) 让我们从更新查询的相关性开始。 从引擎菜单中,打开 “Reference Tuning”
2) 在此视图中,你可以管理引擎每个字段的权重和提升。 请注意,默认情况下,每个字段的权重设置为 1。与其他字段相比,title 字段与你的用户更相关,将其权重更新为 5。从上图的右边可以看出来,当我们搜索 clould 时,title 字段排在第三的位置,而 links 处于第一的位置。我们觉得一篇文章的 title 含有 cloud 的重要性远比在 links 里重要。我们需要在左边的 title 字段调整它的 weight。我们增加它的 weight 直至在右边的显示中 title 处于第一的位置:
3. 单击 “Save” 以应用更改。
4. 在 Quest Tester 中,搜索术语 teacher。 有些文档似乎与该查询不太相关。 让我们创建同义词来解决这个问题。
5. 从引擎菜单中,选择 “Synonyms” 并单击 “Create a Synonym Set”:
6. 将 “teacher”一词与 “educator”和 “instructor” 联系起来。点击上面的 Save 按钮。
7. 使用 Query Tester 再次搜索 teacher。 这次搜索的结果与你的用户更相关。当然我们也可以搜索 educator。它将视为和 teacher 一样的同义词:
当然,我们也可以创建一些新的单词的同义词,比如 elkb:
上面表示,当我们搜索 elkb 时,即代表搜索 Elastic Stack:
8. 在搜索 “release” 时,用户希望获得有关最新发布的信息。 你可以创建 curations来选择将为此查询返回的文档。 curation允许你手动提升或隐藏特定查询的文档。
9. 从引擎菜单中,选择 “Curations”。 为以下查询创建 curation:
- release
- latest release
- latest updates
- latest changes
10. 单击“Continue”后,你将看到当前为查询 “release” 返回的文档。 请注意,第一个文档不一定是最新版本的版本。让我们手动添加与最新版本相关的博客页面。 点击 “Add Results Mannually”
11. 搜索可用的最新版本(例如 “release7.15”)并单击文档旁边的星号。
12、最后,进入“Query Tester”界面,搜索 “latest release”。 第一个文档将是最新版本的博客。
显然最上面显示的文档就是我们在 Curations 里面设置的那几个文档。它们的排名最靠前。
Analytics
我们可以点击 Analytics 来查看我们的引擎的使用统计情况:
我们可以看到最常见的搜索词是什么?
在上面,我们也可以看到有两个词是没有搜索结果的,比如:
我们可以看到 baidu 这个词是没有返回任何的结果的。如果输入一个词不返回任何结果,通常会给用户一个不好的体验。为此,我们可以为这个 batgcodeidu 词创建一个 Synonym,也就是同义词,比如:
我们知道 baidu 在中国是一个搜索引擎。我们可以把 baidu 和 search 等同。经过这样的改造后,我们再次使用 baidu 来进行搜索时,我们可以看到许多的文档:
我们以后再到 Analytics 里查看时,我们就不会发现搜索 baidu 没有返回结果的报告了。
文章来源于互联网:Enterprise:Web Crawler 基础 (二)
相关推荐: Enterprise:Web Crawler 基础 (二)
在之前的文章 “Enterprise:Web Crawler 基础 (一)”,我详细地描述了如何使用 Web crawler 把一个网页的数据采集到 Elasticsearch 中。在今天的文章中,我将继续上一篇文章中的练习。在这篇文章中,我将重点介绍 Ent…