三款开源全文搜索高亮插件,轻松实现文档搜索功能

开源
Selection对象表示用户选择的文本范围或插入符号的当前位置。它代表页面中的文本选区,可能横跨多个元素。文本选区由用户拖拽鼠标经过文字而产生。要获取用于检查或修改的 Selection 对象,我们可以调用 window.getSelection()。

最近在研发多模态文档编辑器(flowmix/docx)的时候,遇到一个比较有意思的功能需求——实现全文的搜索和替换,比如下面的功能场景:

图片图片

总结一下就是我们需要实现如下核心功能:

  • 全文搜索并对搜索文本进行高亮处理
  • 支持搜索结果自动定位和切换
  • 支持对搜索的文本进行一键替换

我的第一反应就是采用 selection API 来实现文本的匹配搜索。

图片图片

Selection对象表示用户选择的文本范围或插入符号的当前位置。它代表页面中的文本选区,可能横跨多个元素。文本选区由用户拖拽鼠标经过文字而产生。要获取用于检查或修改的 Selection 对象,我们可以调用 window.getSelection()

从浏览器兼容性上来看 selection API 还是非常靠谱的,目前很多云文档编辑器大多类似的功能也都采用这个JS API来实现的。

所以顺藤摸瓜,开源市场上一定也有比较成熟的开源库可以帮助们实现类似的功能,所以我花时间调研了几款比较成熟的文本搜索高亮的库, 方便大家更高效的实现类似的功能。

1. mark.js

图片图片

markjs 是一个用 JavaScript 编写的文本高亮工具。

它具有以下特点:

  1. 可以动态标记搜索词或自定义正则表达式📋。
  2. 提供了众多内置选项,如支持变音字符、单独单词搜索、自定义同义词、iframe 支持、自定义过滤器、准确性定义、自定义元素、自定义类名等。
  3. 提供多种使用方式,可配合纯 JavaScript 使用或作为 jQuery 插件。
  4. 下载方式多样,可通过 npm 或 Bower 安装,也可手动下载。
  5. 提供 CDN 服务,方便使用。
  6. API 丰富,包括初始化实例、标记关键词(mark ())、标记自定义正则表达式(markRegExp ())、标记范围(markRanges ())、去除标记(unmark ())等方法,每个方法都有详细的参数说明📄。
  7. 兼容性好,可在所有现代浏览器中使用。
  8. 提供教程,详细解释了一些可能不太容易理解的选项,如元素和类名、排除、单独单词搜索、准确性、变音符号等。

如果大家感兴趣可以在github上参考体验一下:

github地址:https://github.com/julmot/mark.js

2. texthighlighter

图片

Text Highlighter 是一个轻量级JavaScript类,用于在文本区域高亮显示搜索结果。支持多文本区域、响应式设计和原始背景保留。提供大小写敏感搜索、单词匹配、结果计数和导航功能。无需配置,简单易用,适用于需要增强文本搜索体验的网页应用。

github地址:https://github.com/funktechno/texthighlighter

3. Vue-Search-Highlight

图片图片

vue-search-highlight 是一款基于Vue实现的搜索高亮组件,支持HTML内容跨标签匹配关键字。我们可以使用组件的方式来使用,非常简单,下面是它的安装和实现方式:

图片图片

如果大家熟悉vue, 也可以参考学习这款开源项目。

github地址:https://github.com/wintc23/vue-search-highlight

以上这些是我发现的能通过二次开发快速实现文本搜索高亮的方案,当然目前浏览器还有些比较新的特性,可以通过css来实现内容的搜索高亮,官方名称叫做 CSS Custom Highlight API,有了它,我们可以在不改变 dom 结构的情况下自定义任意文本的样式,例如:

图片图片

这上面是我在MDN上写的一个案例, 确实只需要几行代码就能实现文本搜索高亮,感兴趣的小伙伴也可以研究一下, 笔者亲测浏览器兼容性不是特别好, 所以大家要谨慎使用。

最后

后续我们也会在flowmix/docx多模态文档编辑器中实现全文搜索高亮的功能,大家可以参考我上面提供的几种方案,来低成本高效率的实现需求。

最近我们做了一款文档管理类Saas系统, 底层基于 Flowmix/Docx 多模态文档引擎, 这里简单和大家分享一下:

图片图片

大家可以注册使用来管理自己的内容知识文档, 同时能一键生成自己的专属知识库.  

体验地址: http://orange.turntip.cn/doc

每个月我们都会根据用户的需求和规划的迭代计划持续迭代, 大家可以关注 flowmix视界 获取最新更新的信息。

当然从体验上来讲, 我们会持续优化和迭代, 并结合业界最佳体验实践, 将文档搭建能力发挥出最大的价值.

图片图片

编辑器版本体验地址: http://flowmix.turntip.cn/docx

责任编辑:武晓燕 来源: 趣谈前端
相关推荐

2009-02-25 13:41:49

全文搜索内置函数MySQL

2018-08-22 14:25:42

搜索LuceneQuery

2020-06-10 08:23:44

JavaScript开发Web

2009-02-25 13:59:57

布尔全文搜索全文搜索内置函数

2022-03-22 15:20:32

微信全文搜索

2012-05-10 15:41:46

HTML5

2022-12-06 17:22:45

2010-06-10 13:54:10

MySQL全文搜索

2015-04-03 11:23:11

JavaScript全文搜索相关度评分

2012-05-30 14:03:33

开源大数据搜索

2018-03-13 08:51:31

开源区块链加密货币

2014-12-31 17:12:54

模糊查询模糊查询

2022-11-15 18:31:37

React

2012-08-06 09:52:03

Android搜索功能

2023-12-10 20:33:50

Redis搜索全文

2014-10-14 09:49:47

Postgres数据库

2010-06-11 17:00:34

2021-01-01 10:00:04

Windows 10Windows操作系统

2009-03-03 11:31:21

Twintter集成搜索

2022-01-13 20:14:46

Qury元宇宙搜索
点赞
收藏

51CTO技术栈公众号