《Elastic Stack 实战手册》——三、产品能力——3.5 进阶篇——3.5.18.Enterprise Search —— 3.5.18.2.Site Search(中) https://developer.aliyun.com/article/1226776
三、搜索体验的高级配置
关于搜索框以及结果展示样式,官方还提供了其他方式,比如弹框展示,大家感兴趣可以自己试试。
爬取配置
1、通过爬取配置可以定义抓取内容范围,从而提高爬取效率。默认情况下,抓取工具会抓取我们配置的 URL 域下面所有的可用网页,所以如果我们想提高爬取分析速度就可以通过配置抓取规则缩小抓取范围。通过菜单“Domains”的 Advanced Settings 配置 sitemap 文件:
这里的 sitemap 是XML格式的文件,通过它让我们能从引擎级别和域级别深入控制爬虫。内容示例:
<urlset> <url> <loc> https://swiftype.com/documentation/site-search/ </loc> </url> <url> <loc> https://swiftype.com/documentation/site-search/guides/search-optimization </loc> </url> </urlset>
爬虫工具会去默认路径下解析 sitemap.xml(假设配置的 URL:https://example.com/,那么sitemap.xml 的路径是 https://example.com/sitemap.xml)。如果多个 sitemap 或者名字不是默认名,也可以通过 robots.txt 指定,如下例:
User-agent: Swiftbot Sitemap: https://example.com/special_directory/sitemap.xml Sitemap: https://example.com/different_sitemap_name.xml
2、配置完爬取范围后,我们来看看页面内容是如何编制为索引的。每个被爬取页面会根据一个默认的 schema 编入索引,默认存储在一个叫 page 的 DocumentType 索引里。
所以,我们在前面提到的 swiftype.com 网站中“Content”菜单里的页面详情是与这个配置对应的:
同时 Site Search 提供了 API,可以自定义新增索引的 DocumentType 以及其 Field。
3、当我们网站内容发生更新后,搜索结果可以通过下面配置自动更新
自定义搜索结果配置
Site Search 还支持通过直观的界面自定义搜索结果(结果排名)、调整数据类型的权重、创建同义词组(同义词)等,从而提供更精准的搜索相关性。如下示例:
l 搜索结果排序,可以针对固定的搜索词制定结果的排序:
如上图我们可以拖拽定义搜索结果顺序,可以对结果进行固定、也支持从结果中删除某个内容。
l 按照数据字段的重要程度来增减权重:
比如:一个文档通常 title 比其他字段相关性可能更高一些
l 增加一些搜索同义词:
例如,我为“线程”增加一个同义词“并发”:
添加完同义词后,我们来个人网站上看看效果:
从上面我们可看出来:当我们输入“并发”后,我们立马可以查看到所有的“线程”相关联的文档。
至此,我们可以看到通过简单的配置便可以为网站提供搜索功能,不需要自己去实现繁重的搜索功能、也不需要更改自己的项目结构,非常方便。