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

%title插图%num

我们会发现界面的输入框会自动具有 auto-complete 功能。这些提示都是来自于你建立的引擎。你无需做任何的设置。

%title插图%num

点击第一结果的超链接:

%title插图%num

它会自动重定向到文章的链接。

我们点击 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

%title插图%num

上面是我在 ubuntu 机器上部署并运行的结果。

调整搜索引擎

你现在可以搜索博客。 但是,你可以通过调整搜索引擎更进一步。 在本节中,你将学习如何更改查询的相关性、设置
同义词,并定义 curation。我们回到 App Search 的界面:

1) 让我们从更新查询的相关性开始。 从引擎菜单中,打开 “Reference Tuning”

%title插图%num
2) 在此视图中,你可以管理引擎每个字段的权重和提升。 请注意,默认情况下,每个字段的权重设置为 1。与其他字段相比,title 字段与你的用户更相关,将其权重更新为 5。从上图的右边可以看出来,当我们搜索 clould 时,title 字段排在第三的位置,而 links 处于第一的位置。我们觉得一篇文章的 title 含有 cloud 的重要性远比在 links 里重要。我们需要在左边的 title 字段调整它的 weight。我们增加它的 weight 直至在右边的显示中 title 处于第一的位置:

%title插图%num
3. 单击 “Save” 以应用更改。
4. 在 Quest Tester 中,搜索术语 teacher。 有些文档似乎与该查询不太相关。 让我们创建同义词来解决这个问题。

%title插图%num
5. 从引擎菜单中,选择 “Synonyms” 并单击 “Create a Synonym Set”:

%title插图%num

%title插图%num
6. 将 “teacher”一词与 “educator”和 “instructor” 联系起来。点击上面的 Save 按钮。

%title插图%num

7. 使用 Query Tester 再次搜索 teacher。 这次搜索的结果与你的用户更相关。当然我们也可以搜索 educator。它将视为和 teacher 一样的同义词:

%title插图%num

当然,我们也可以创建一些新的单词的同义词,比如 elkb:

%title插图%num

上面表示,当我们搜索 elkb 时,即代表搜索 Elastic Stack:

%title插图%num

8. 在搜索 “release” 时,用户希望获得有关最新发布的信息。 你可以创建 curations来选择将为此查询返回的文档。 curation允许你手动提升或隐藏特定查询的文档。
9. 从引擎菜单中,选择 “Curations”。 为以下查询创建 curation:

  • release
  • latest release
  • latest updates
  • latest changes

%title插图%num

%title插图%num

10. 单击“Continue”后,你将看到当前为查询 “release” 返回的文档。 请注意,第一个文档不一定是最新版本的版本。让我们手动添加与最新版本相关的博客页面。 点击 “Add Results Mannually”

%title插图%num
11. 搜索可用的最新版本(例如 “release7.15”)并单击文档旁边的星号。

%title插图%num
12、最后,进入“Query Tester”界面,搜索 “latest release”。 第一个文档将是最新版本的博客。

%title插图%num

显然最上面显示的文档就是我们在 Curations 里面设置的那几个文档。它们的排名最靠前。

Analytics

我们可以点击 Analytics 来查看我们的引擎的使用统计情况:

%title插图%num

我们可以看到最常见的搜索词是什么?

%title插图%num

在上面,我们也可以看到有两个词是没有搜索结果的,比如:

%title插图%num

我们可以看到 baidu 这个词是没有返回任何的结果的。如果输入一个词不返回任何结果,通常会给用户一个不好的体验。为此,我们可以为这个 batgcodeidu 词创建一个 Synonym,也就是同义词,比如:

%title插图%num我们知道 baidu 在中国是一个搜索引擎。我们可以把 baidu 和 search 等同。经过这样的改造后,我们再次使用 baidu 来进行搜索时,我们可以看到许多的文档:

%title插图%num

我们以后再到 Analytics 里查看时,我们就不会发现搜索 baidu 没有返回结果的报告了。

文章来源于互联网:Enterprise:Web Crawler 基础 (二)

相关推荐: Enterprise:Web Crawler 基础 (二)

在之前的文章 “Enterprise:Web Crawler 基础 (一)”,我详细地描述了如何使用 Web crawler 把一个网页的数据采集到 Elasticsearch 中。在今天的文章中,我将继续上一篇文章中的练习。在这篇文章中,我将重点介绍 Ent…

Tags: , , ,