中文全文检索:不用分词库也能搜准
问题
SQLite 的 FTS5 默认分词器会把中文整段当成一个词元,搜索基本失效。
思路
把中文逐字拆开入库,查询时把连续的中文拼成短语(短语要求词元相邻):
- 入库:
中医大辞典→中 医 大 辞 典 - 查询:
辞典→"辞 典"
这样既保留子串匹配的准确度,又不需要任何分词库。英文则按整个单词处理。
核心就三行:
// 中文逐字拆开
return String(text).replace(/[\u4e00-\u9fff]/g, (c) => ' ' + c + ' ')
实测效果
中文→ 命中正文含"中文"的文章keywords→ 英文单词照常命中- 草稿不进索引,搜不到
顺带的好处
同一张索引表可以装下不同来源的内容(文章、论坛帖子、辞典词条),
后面把辞书数据导进来时不用再动检索逻辑。
评论
还没有评论。