如何通过Typesense便捷获取搜索词周边的搜索上下文?
Typesense 获取搜索词上下文片段的实现方案
Typesense本身没有内置直接返回搜索词前后固定长度上下文(不拆分单词)的功能,但可以通过两种方式实现你的需求:
利用高亮功能+自定义代码处理
Typesense的搜索接口支持返回高亮后的字段内容(默认用<mark>标签包裹匹配词)。你可以拿到完整的字段文本后,在业务代码里定位高亮词的位置,向前/向后截取固定数量的完整单词,最后拼接成类似..repeat the <em>query</em> we made earlier..的展示片段。
简单处理逻辑参考:- 从搜索结果中提取带高亮标签的字段内容
- 定位高亮词的起始与结束位置
- 向前遍历文本,按空格分割收集指定数量的前置完整单词
- 向后遍历文本,同样收集指定数量的后置完整单词
- 拼接前置单词、高亮词、后置单词,添加省略号后展示
预生成片段字段
在将HTML数据导入Typesense之前,预先把长文本拆分成多个包含固定前后单词的小片段(比如每个片段包含目标词前后3个单词),将这些片段作为单独的字段(比如context_snippets)加入索引。搜索时直接查询这个字段,返回的结果就是包含目标词的上下文片段,可直接用于展示。不过这种方式会增加索引体积,适合文本长度适中的场景。
内容的提问来源于stack exchange,提问作者Flight Pilot
相关产品推荐
相关产品推荐

