前言
搜索系统是用于”查找”信息的工具,但搜索日志本身也是宝贵的信息来源。 “搜索了什么”、”什么找不到”、”哪些信息被频繁浏览”——这些数据是映射组织信息需求和知识缺口的一面镜子。
本文将 Fess 的搜索日志与 OpenSearch Dashboards 相结合,构建一个可视化组织知识利用状况的分析仪表板。
目标读者
希望定量了解搜索系统使用情况的人员
希望为信息利用战略收集数据的人员
希望了解 OpenSearch Dashboards 基本操作的人员
搜索数据的价值
从搜索日志中可以读取的信息
搜索日志是一种稀有的数据,可以定量把握组织的信息需求。
| 数据 | 洞察 |
|---|---|
| 搜索关键词 | 员工在寻找什么(信息需求) |
| 零命中查询 | 组织中缺少的信息(知识缺口) |
| 点击日志 | 哪些搜索结果有用(内容价值) |
| 搜索频率的时序变化 | 信息需求的变化(趋势) |
| 热门词汇 | 组织整体的关注点 |
Fess 收集的数据
Fess 自动收集和存储以下数据。
搜索日志(fess_log.search_log)
可在管理界面的 [系统信息] > [搜索日志] 中查看。 存储在 OpenSearch 的索引 fess_log.search_log 中。
主要字段:
| 字段名 | 类型 | 说明 |
|---|---|---|
searchWord | keyword | 搜索关键词 |
requestedAt | date | 搜索日期时间 |
hitCount | long | 搜索结果数量(为 0 时即为零命中) |
queryTime | long | 查询执行时间(毫秒) |
responseTime | long | 总响应时间(毫秒) |
userAgent | keyword | 用户代理 |
clientIp | keyword | 客户端 IP 地址 |
accessType | keyword | 访问类型(web、json、gsa、admin 等) |
queryId | keyword | 查询 ID(用于与点击日志关联) |
点击日志(fess_log.click_log)
记录搜索结果链接被点击的信息。 存储在 OpenSearch 的索引 fess_log.click_log 中。
| 字段名 | 类型 | 说明 |
|---|---|---|
url | keyword | 被点击的 URL |
queryId | keyword | 搜索日志的 queryId(标识从哪次搜索点击而来) |
order | integer | 搜索结果中的显示位置 |
requestedAt | date | 点击日期时间 |
docId | keyword | 文档 ID |
热门词汇
搜索画面上显示的热门词汇是基于搜索日志汇总到 Fess 的 suggest 索引中的。 超过一定搜索命中数的查询将根据搜索次数进行排名。
使用 OpenSearch Dashboards 进行可视化
由于 Fess 的搜索日志存储在 OpenSearch 中,因此可以使用 OpenSearch Dashboards 进行高级可视化。
OpenSearch Dashboards 的设置
在 Docker Compose 配置中添加 OpenSearch Dashboards。
services:
opensearch-dashboards:
image: opensearchproject/opensearch-dashboards:3.6.0
ports:
- "5601:5601"
environment:
OPENSEARCH_HOSTS: '["http://opensearch:9200"]'
DISABLE_SECURITY_DASHBOARDS_PLUGIN: "true"
访问 http://localhost:5601 使用 Dashboards 界面。
创建索引模式
要在 OpenSearch Dashboards 中可视化 Fess 的日志数据,首先需要创建索引模式。
访问 Dashboards,从左侧菜单选择 [Stack Management] > [Index Patterns]
点击 [Create index pattern]
创建以下索引模式
| 索引模式 | 时间字段 | 用途 |
|---|---|---|
fess_log.search_log | requestedAt | 搜索日志分析 |
fess_log.click_log | requestedAt | 点击日志分析 |
仪表板设计
按以下分析视角设计仪表板。 从左侧菜单的 [Visualize] 创建各项可视化,并汇总到 [Dashboard] 中。
搜索使用概况
每日搜索次数趋势
了解搜索使用量的变化情况。
索引模式:
fess_log.search_log可视化:Line(折线图)
X 轴:Date Histogram(字段:
requestedAt,间隔:1d)Y 轴:Count
如果使用量在增加,说明搜索系统已经得到普及;如果在减少,则需要改进。
按时间段的搜索次数
了解搜索集中在哪些时间段。
可视化:Vertical Bar(柱状图)
X 轴:Date Histogram(字段:
requestedAt,间隔:1h)Y 轴:Count
如果上班时间或午餐后搜索较多,说明信息收集已成为日常工作的一部分。
搜索质量分析
零命中率趋势
零命中率是衡量搜索质量的重要指标。 搜索日志中 hitCount 字段为 0 的记录即为零命中查询。
索引模式:
fess_log.search_log过滤器:添加
hitCount: 0以提取零命中查询可视化:Line(折线图)
X 轴:Date Histogram(字段:
requestedAt,间隔:1d)Y 轴:Count
如果零命中率较高,则需要添加同义词或扩大爬取范围(参见第8回)。
另外,在管理界面的 [系统信息] > [搜索日志] 中也可以查看零命中查询的列表。
零命中查询的词云
将零命中查询以词云形式展示,可以一目了然地了解缺少哪些信息。
过滤器:
hitCount: 0可视化:Tag Cloud
字段:Terms Aggregation(字段:
searchWord,大小:50)
内容价值分析
点击量最多的搜索结果
经常被点击的搜索结果是对组织而言价值较高的内容。
索引模式:
fess_log.click_log可视化:Data Table
字段:Terms Aggregation(字段:
url,大小:20,排序:Count 降序)
应优先维护和更新这些内容。
点击位置分布
查看搜索结果中第几位被点击的分布情况。
索引模式:
fess_log.click_log可视化:Vertical Bar(柱状图)
X 轴:Histogram(字段:
order,间隔:1)Y 轴:Count
如果第1~3位的点击较多,说明搜索质量良好;如果第10位以后的点击较多,则需要改进排名。
信息需求趋势分析
热门关键词排名
了解组织整体关注什么。
索引模式:
fess_log.search_log可视化:Data Table
字段:Terms Aggregation(字段:
searchWord,大小:20,排序:Count 降序)
热门关键词的变化反映了组织课题和关注点的变化。
分析结果的活用
搜索数据的分析结果可以应用于以下举措。
内容战略
零命中查询:确定缺少的内容并委托创建
热门关键词:充实经常被搜索的主题信息
点击率低的结果:考虑改进或删除内容
搜索质量改进
添加同义词:从零命中查询中发现同义词候选
Key Match 设置:为热门查询设置最佳结果
Boost 调整:基于点击率改进排名
IT 投资决策
使用量增加:规划服务器资源扩容
新的信息需求:考虑对接额外的数据源
AI 功能需求:决定是否引入 AI 搜索模式(参见第19回)
定期报告的制作
将分析结果定期整理成报告,与相关人员共享。
月度报告项目示例
搜索使用情况摘要(总搜索次数、环比)
零命中率趋势与改进状况
热门关键词 Top 10
新发现的知识缺口
已实施的改进措施及其效果
下月改进计划
总结
本文介绍了如何利用搜索日志实现组织知识的可视化。
从搜索日志获得的洞察(信息需求、知识缺口、内容价值)
使用 OpenSearch Dashboards 构建可视化仪表板
将分析结果应用于内容战略、搜索质量改进和 IT 投资
通过定期报告实现持续改进
搜索数据是描绘”组织知识地图”的宝贵资产。 AI 及下一代搜索篇到此结束。下一回作为最终回,将对整个系列进行总结。