MongoDB全文搜索+部分单词匹配的解决方法

 非烦金美店 发布于 2023-02-04 20:21

由于使用mongodb全文搜索无法通过单词"blue"找到"blueberry",我想帮助我的用户完成"blue"到"blueberry"这个词.为此,是否可以查询mongodb全文索引中的所有单词 - >我可以将这些单词用作建议,即对于typeahead.js?

1 个回答
  • 在文本搜索中出现的语言使用算法来尝试关联从公共基础派生的单词(例如,"运行"应该匹配"运行").这与您要为自动完成功能实现的前缀匹配(例如"蓝色"匹配"蓝莓")不同.

    为了最有效地使用typeahead.jsMongoDB文本搜索,我建议关注prefetchtypeahead中的支持:

    创建一个keywords集合,其中包含您的集合中使用的常用单词(可能包含使用频率计数).您可以通过在您具有文本搜索索引的集合中运行Map/Reduce来创建此集合,并在添加新文档时使用定期的Incremental Map/Reduce使单词列表保持最新.

    让您的应用程序keywords使用唯一关键字从集合中生成JSON文档(可能仅限于基于单词频率的"热门"关键字,以使列表易于管理/相关).

    然后,您可以将生成的关键字JSON用于具有typeahead prefetch功能的客户端自动完成:

    $('.mysearch .typeahead').typeahead({
      name: 'mysearch',
      prefetch: '/data/keywords.json'
    });
    

    typeahead.jsprefetch在localStorage中缓存JSON数据以进行客户端搜索.提交搜索表单后,您的应用程序可以使用服务器端MongoDB文本搜索以相关顺序返回完整结果.

    2023-02-04 20:26 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有