Lucene、Solr、Elasticsearch 全是 Java 造的,Java CMS 的搜索为什么还是难用

举报
DevUp 发表于 2026/10/29 20:59:05 2026/10/29
【摘要】 Lucene、Solr、Elasticsearch、OpenSearch 都是 Java 写的,Java CMS 自带搜索却只到"后台能找到"。判据是分词和权限过滤,Alfresco 已改用外接引擎。

现在跑在无数系统底下的全文检索,几乎都是用 Java 写的。

Lucene 1999 年由 Doug Cutting 写出第一版,2001 年进 Apache(先进 Jakarta,2005 年独立成顶级项目);2010 年它上面长出了 Elasticsearch。

2021 年 Elasticsearch 把许可从 Apache 2.0 换成自家许可,社区拿最后一个开源版本(7.10.2)分叉出 OpenSearch。这一支现在归 Linux 基金会,协议还是 Apache 2.0。

但翻开 Java CMS 的官方文档,"搜索"从来只配叫够用:能搜文章、能搜页面,至于分词准不准、结果按不按权限过滤,文档一般不大写。

一边是搜索技术的原产地,一边是只能"够用"的 CMS 自带搜索。这个反差是这门生意的分工方式决定的。

为什么原地踏步

企业场景里,搜索是一门独立的生意。

中文分词、同义词、停用词、按部门过滤结果、高亮摘要、聚合统计、集群和容灾——这些需求随便挑一条,都够一个专门产品迭代十年。CMS 厂商的算盘打得清楚:这层交给 Elasticsearch、OpenSearch 们,自己做"内容录入和发布流程"就好。

所以 Java CMS 自带搜索的定位,从来只是"后台里能找到这篇文章"。写 CMS 的团队和写检索内核的团队本来就不是同一批人,也不在同一个产品部门里,母语是 Java 帮不上这个忙。

五家实况

官方文档口径,从自带排到外接:

XWiki(LGPL-2.1):默认搜索引擎就是 Solr。官方扩展页上它叫 Search Application,基于 Apache Solr,随 XWiki Standard 一起分发;5.1 那版的发布说明把"Solr 是默认搜索引擎"单列成一条新特性,从那以后没换过。

JPress(LGPL-3.0):文章搜索给四种后端可选:SQL LIKE、Lucene、Elasticsearch、OpenSearch,后台里切换。选择权整个交给站长。

Halo(GPL-3.0):内置全文搜索引擎,文章标题和页面正文都能搜。官方开发者文档把这一层做成了扩展点,写明内置的默认是 Lucene,装插件能换成 Elasticsearch、Meilisearch 这类外部引擎。

Liferay(LGPL-2.1 或 DXP EULA 双许可):生产环境要自己立一套 Elasticsearch,官方给了 connector,也能直接接 Elastic Cloud。

版本这条线这两年走得快:7.4 U81 起官方出厂支持并推荐 Elasticsearch 8,2026.Q1 起自带原生 ES 8 connector 取代了 ES 7 connector,ES 7 同一时期到期。

随安装包和 Docker 镜像一起启动的那个 sidecar Elasticsearch,官方文档原话是"不适合生产",只供本地开发和测试。

Alfresco(社区版 LGPL v3):五家唯一换过路线的一家。2016 年 5.2 起把搜索独立成 Search Services 打包,1.0 基于 Solr 6.3;2018 年起 Solr 6 随社区版一起发行。

到 2026 年 7 月的社区版 26.2,Solr 这条线终止,换成 Alfresco Search Community:把内容索引进一套标准 OpenSearch(2.11.1)或 Elasticsearch(8.17.x)集群,集群上不装任何 Alfresco 插件。这个模块 2026 年 10 月已开源,协议 LGPL v3。

读法:分不分词、管不管权限

把这五家摆一起,差别落在两件默认不解决的事上。

分词这一关,中文站上最明显:搜"内容管理"命中不了"内容管理与发布"的文章,分词器不配,检索就是字符串游戏。权限过滤是另一关:企业站的内容按部门隔离,搜索结果不能谁看都一个样;自带搜索大多只认"这篇发了没发",不认"这篇你能看不能看"。

这两件事做起来都是独立产品的工作量,CMS 默认都不接。说"够用",说的是它就管到这一层。

什么时候别等了

内容几百条、一个人写的站,Halo 那把内置搜索够用,这是它的诚实档位。

三个信号凑够两个,就该按外挂检索的路子走:后台搜索开始搜不出东西;访客抱怨搜到的文章牛头不对马嘴(分词问题);不同角色需要看到不同结果(权限问题)。真到这一天,参考系就在上面五家里——JPress 把四种后端做成了后台里的开关,XWiki 内置 Solr,Liferay 与 Alfresco 都要求外接,给出的都是现成的口子。

别在自带搜索上等厂商补齐。等来的多半是下个大版本里一个更好的默认分词器,而不是你要的那套检索。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。