【发布时间】:2017-10-07 11:17:00
【问题描述】:
我有一组文档,每个文档都带有一组标签,其中可能包含空格。用户提供了一组可能拼错的标签,我想找到匹配标签数量最多的文档(可选加权)。
有数千个文档和标签,但每个文档最多有 100 个标签。
我正在寻找一种轻量级且高性能的解决方案,其中搜索应该完全在客户端使用 JavaScript,但可以使用 node.js 对索引进行一些预处理。
我的想法是使用 multiset 为文档创建标签的反向索引,以及找到拼写错误标签的正确拼写的模糊索引,这些索引在 node.js 的预处理步骤中创建并序列化为 JSON 文件.在搜索步骤中,我想先查询查询集的每个项目的模糊索引以获得最可能正确的标签,如果存在则查询反向索引并将结果集添加到包中(编号集) .对所有输入标签执行此操作后,按降序排序的袋子内容应该提供最佳匹配文档。
我的问题
- 这似乎是一个常见问题,是否已经有一个我可以重复使用的实现?我查看了 lunr.js 和 fuse.js,但它们似乎有不同的关注点。
- 这是解决问题的明智方法吗?您是否看到任何明显的改进?
- 将模糊步骤与倒排索引分开是更好还是有办法将它们结合起来?
【问题讨论】:
标签: javascript search tagging fuzzy-search