我有一组文档,每个文档都用一组可以包含空格的标签进行注释。用户提供一组可能拼错的标签,我想找到匹配标签数量最多的文档(可选择加权)。如何在JavaScript中搜索最接近的标记集匹配?
有几千个文档和标签,但每个文档至多有100个标签。
我正在寻找一个轻量级且高性能的解决方案,其中搜索应该完全在客户端使用JavaScript,但是可以使用node.js对索引进行一些预处理。
我的想法是使用multiset和模糊索引来创建文档的反向索引,该索引可以找到拼写错误的标签的正确拼写,这些拼写是在node.js中的预处理步骤中创建的,并且序列化为JSON文件。在搜索步骤中,我想先为查询集的每个项目查询模糊索引以获得最有可能的正确标签,并且如果存在查询反向索引并将结果集添加到袋子(编号集) 。在完成所有输入标签后,袋子的内容按降序排列,应提供最佳匹配文档。
我的问题
- 这似乎是一个常见的问题,有没有已经为它的实现,我可以重用?我看着lunr.js和fuse.js,但他们似乎有不同的重点。
- 这是一个明智的方法来解决这个问题吗?你看到任何明显的改进?
- 将模糊步与反向索引分开还是有办法将它们组合起来更好吗?