Enterprise:Web Crawler 基础 (二)

23 篇文章 7 订阅

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

  • Relevance
  • Curations
  • Synonyms

创建一个搜索界面

现在你已经将 www.elastic.co 网站上的所有英文博客摄入入索引,你可以 建立一个搜索界面,让你的用户可以在博客中进行有效的搜索。

1)在上一节中,你学习了如何通过 “Query Tester” 界面进行搜索。 这是一个 快速搜索文档的便捷方式,但它并没有为你提供所有你期望从搜索界面获得的功能。 你还需要有自动完成功能, 建议,或分面。 转到 “Search UI” 以创建自定义界面。

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       
  inflating: 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              
   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. 搜索可用的最新版本(例如 “release 7.15”)并单击文档旁边的星号。


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

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

Analytics

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

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

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

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

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

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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值