跳到主要内容

1. 为什么要在 WCM 启用全文搜索

  • 更好的检索体验:支持对 WCM 内容正文、组件字段、富文本内的文本进行检索,而不仅仅是标题或元数据。
  • 精细过滤:配合内容类型(Authoring Templates)、站点区域(Sites/Library)、分类与标记,可实现面向业务的搜索过滤。
  • 可扩展:与 Portal Search/Embedded Solr 集成,支持增量索引、定时重建、按需重建与多语言分片。

2. 前置条件与环境检查

在启用之前,先完成基础核查与准备:

  • 版本与修订
    • Portal/DX 版本为 9 及以上。
    • 安装必要的 CF(尤其涉及 Search/WCM 修复),以获得最新的索引器与安全修复。
  • 拓扑
    • 单机或集群均可。集群需确保每个节点使用一致的 Search 配置并共享索引或使用集中式搜索服务。
  • 权限
    • 需要 Portal 管理员权限(wpsadmin 或同等角色);
    • WCM 库读权限和管理权限,用于检查内容与草稿/发布状态;
    • 对搜索管理(Search Administration)页面的访问权限。
  • 服务与端口
    • 确认 Portal 已启用搜索应用(Search Center/Unified Search)。
    • WebSphere 应用服务器对应端口开放(例如 HTTP 10039/ HTTPS 10042 等因环境而异)。
  • 语言与编码
    • 目标语言的分词/分析器可用(中文建议使用中文兼容分析器或配置 ICU 分词支持,如在外置 Solr)。

3. WCM 全文搜索启用的总体流程

  1. 配置并启用搜索服务(Portal Search 或外部搜索服务)。
  2. 在搜索集合(Search Collection)中添加 WCM 索引源(Crawler/Seed)。
  3. 在 WCM 启用内容可搜索属性(可通过“呈现选项”“工作流阶段”或库级属性)。
  4. 运行初始全量索引(Full Crawl/Build)。
  5. 配置增量索引任务(定时器/调度器)。
  6. 在前端页面放置并配置搜索组件(Search Portlet/Scripted Query/WCM Rendering),并设置查询参数与作用范围。
  7. 验证、监控与优化(字段权重、停用词、高亮、语言分析器)。

4. 启用与配置 Portal/DX 搜索服务

4.1 确认搜索功能已安装并启用

  • 在 Portal 管理控制台中打开“Search Administration”(搜索管理):
  • 检查是否存在默认的搜索集合(Search Collection),若无则新建。
搜索服务

4.2 新建搜索集合(Search Collection)

  • 进入 Search Administration,选择“新建搜索集合”(Create New Search Collection):
    • 名称:collect9
    • 存储位置:选择高 IO 的磁盘路径(集群建议使用共享存储)
    • 语言与分析器:根据站点语言设置。

提示:如果使用外部 Solr/Elasticsearch,请在“Search Service”层完成连接(endpoint、认证、collection/core 名等),并确保 Portal 可以读写该集合。


5. 为 WCM 内容添加索引源(WCM Seed)

5.1 添加 WCM 索引源

  • 在 Collect9选择“新建内容源“(Add Seed):
    • 类型:WCM站点
    • 内容源名称:Source9

5.2 WCM Seed 关键参数

  • 库(Library):选择需要被索引的一个或多个 WCM 库。如 CorporateSiteNewsProducts
  • 内容类型过滤(Authoring Template / Content Type):
    • 可留空(索引库内所有内容),或指定模板列表,例如 AT_NewsArticle, AT_Product
  • 发布状态(State):
    • 建议选择 Published Only(仅发布内容)
  • 渲染模式(Render/Raw):
    • 渲染模式会通过呈现组件获取最终文本(含富文本字段处理),适合最终展示检索;
    • 原始模式可更快但对富文本提取有限。多数场景建议渲染模式。
  • 语言(Locale):
    • 若多语言站点,选择 All Locales,或为每个语言建立单独 seed 以便分片与权重调优
  • 日期范围(Time Window):
    • 可设置“仅索引某时间范围内更新的内容”以便增量任务使用
  • 安全过滤(Security/ACL awareness):
    • 启用“Respect Item Security/ACL”,使搜索结果自动遵循用户权限
  • 最大项大小/超时(Max Item Size / Timeout):
    • 如:Max Render Time: 10sMax Content Size: 5 MB,根据页面复杂度调整
  • 索引字段映射(Field Mapping):
    • 标题映射:title -> wcm_title
    • 正文映射:body / richtext -> wcm_body
    • 元数据:sitearea, categories, tags -> wcm_sitearea, wcm_category, wcm_tag
    • 唯一键:uuid -> id(保持稳定主键)
  • 抓取间隔与并发(Crawl Interval / Concurrency):
    • 并发线程:2-4(视服务器负载)
    • 抓取延迟:100-300 ms(避免渲染高峰期压力)

注意:字段命名以你的搜索服务字段 schema 为准。


6. 在 WCM 端确保内容可被检索

6.1 库与项目的可搜索设置

  • 在 WCM Authoring UI 中,检查库级或站点区域的属性是否允许搜索:
    • “Searchable” 或 “Include in search index” 开关开启
  • 对单个内容项(Content Item):
    • 在“呈现选项/Presentation”或“属性/Properties”中勾选“Include in search”
    • 确保内容状态为“已发布(Published)”并已通过工作流

6.2 字段与模板

  • 在 Authoring Template 中对关键字段打标签便于索引器识别:
    • 标题字段:Title
    • 正文字段:Rich TextSummary
    • 元数据:KeywordsCategoriesTags
  • 富文本中的附件/链接:
    • 若需要让附件文本(PDF/Office)可搜索,需在搜索服务端启用 Tika/内容抽取器(外部 Solr/ES 场景)

7. 运行初始全量索引

7.1 触发全量构建

  • 在 搜索集合(Collect9) 中,选择 WCM索引源(Content9),点击 Rebuild 或 Full Crawl
  • 监控进度:
    • Search Admin 控制台中的“任务队列/日志”
    • 应用服务器日志(SystemOut.log )中查看抓取与提交进度

7.2 全量索引性能建议

  • 默认是间隔2小时执行增量索引,也可调整到在业务低峰期执行
  • 临时提高并发线程与提交批量大小(commitWithin/autoCommit),完成后恢复到稳态配置
  • 观察 CPU、JVM Heap、GC 情况;为渲染模式预留足够的堆内存

8. 配置增量索引与调度

8.1 增量索引(Delta/Incremental)

  • 在 Seed 配置中开启“Incremental crawl”,并设置变更检测策略:
    • 依据 WCM 修改时间戳(lastModified)或 Syndication 事件
  • 建议参数:
    • 周期:*/15 * * * *(每 15 分钟一次)或按业务需要
    • 批量提交:commitWithin=10000 ms
    • 最大变更抓取数:500-2000(按更新频率与硬件调节)

8.2 定时任务(Scheduler)

  • 在 Search Admin 或 Portal 任务调度器中创建计划任务:
    • 任务名:WCM-Incremental-Index
    • 触发器:Cron 表达式,例如 0 */15 * * * ?
    • 超时:600 s
    • 失败告警:邮件或监控系统

9. 搜索前端与查询参数

9.1 放置搜索组件

  • 在 Portal 页面中添加搜索 Portlet(Search Center/Unified Search Portlet)或自定义组件:
    • 搜索范围(collection):WCM-Content-Collection
    • 默认查询字段:wcm_title^3 wcm_body^1 wcm_tag^2
    • 过滤器:按库/站点区域,示例:wcm_library:CorporateSite AND state:published

9.2 查询与高亮参数示例

  • 基本查询:
    • q=用户输入关键词
    • defType=edismax
    • qf=wcm_title^3 wcm_body^1 wcm_tag^2
  • 过滤与分页:
    • fq=state:published
    • start=0&rows=10
  • 排序:
    • sort=score desc, lastModified desc
  • 高亮:
    • hl=true&hl.fl=wcm_title,wcm_body&hl.simple.pre=<em>&hl.simple.post=</em>
  • 多语言:
    • fq=locale:zh_CN 或使用独立 collection/seed

若使用自定义前端,可通过 REST/JSON API 直接调用搜索服务(Solr/ES),再按权限过滤结果。

10. 集群与安全注意事项

  • 集群部署:
    • 使用共享索引或集中式搜索节点;避免每节点维护独立索引导致结果不一致
    • 确保各节点环境变量、JNDI、搜索 endpoint 一致
  • 安全传播(ACL):
    • 开启“Security-aware indexing”,并在查询时启用“Filter by user context”(Portal 会注入来宾/登录用户的可见性过滤)
  • 同步与发布:
    • WCM Syndication(内容同步)完成后再触发增量索引;避免索引空洞
  • SSL 与证书:
    • 搜索服务走 HTTPS 时导入受信证书到 Portal truststore,确保 crawler 与提交不报握手错误

11. 常见问题与排障

  • 问题:已发布内容搜不到
    • 检查内容是否勾选“Include in search”
    • 确认 seed 过滤条件没有将该库/模板排除
    • 查看增量任务是否正常运行;必要时发起全量重建
  • 问题:富文本内文字未被索引
    • 切换到渲染模式索引,或启用内容抽取器(Tika)以解析 HTML/附件
  • 问题:中文分词效果差
    • 在外置 Solr 中使用中文适配的 analyzer(如 ICU、SmartChinese 或第三方分词)并统一字段类型
  • 问题:结果与权限不符
    • 确认开启 ACL-aware 索引与查询侧的安全过滤;核对用户在 WCM 库和站点区域的访问权
  • 问题:索引膨胀或提交很慢
    • 调整 autoCommit、mergePolicy 与 segment 数量;定期优化与清理已删除文档
  • 日志位置:
    • Portal:SystemOut.logtrace.log(开启 com.ibm.portal.search.*=all 提高诊断)

参考文档:

Search

留下回复