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

2024-01-28

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


语言词干 http://en.wikipedia.org/wiki/Stemming在文本搜索中,使用一种算法来尝试关联源自共同基础的单词(例如,“running”应该与“run”匹配)。这与您想要实现自动完成功能的前缀匹配(例如“blue”匹配“blueberry”)不同。

为了最有效地利用typeahead.js对于 MongoDB 文本搜索,我建议重点关注prefetch支持提前输入:

  • 创建一个keywords集合,其中包含集合中使用的常用单词(可能包含使用频率计数)。您可以通过以下方式创建此集合运行 Map/Reduce http://jeff.jke.net/2010/12/09/counting-word-frequency-using-mapreduce在整个集合中,您有文本搜索索引,并使用定期更新保持单词列表最新增量Map/Reduce http://docs.mongodb.org/manual/tutorial/perform-incremental-map-reduce/添加新文档时。

  • 让您的应用程序从以下位置生成 JSON 文档keywords具有独特关键字的集合(可能仅限于基于词频的“流行”关键字,以保持列表的可管理性/相关性)。

然后,您可以使用生成的关键字 JSON 进行客户端自动完成和预先输入prefetch特征:

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

typeahead.js将缓存prefetchlocalStorage 中的 JSON 数据用于客户端搜索。当搜索表单提交后,您的应用程序可以使用服务器端MongoDB 文本搜索 http://docs.mongodb.org/manual/tutorial/search-for-text/按相关顺序返回完整结果。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • Meteor 独特客户端集合的发布/订阅策略

    使用 Meteor 我想知道如何最好地处理共享相同服务器端数据库集合的不同客户端集合 考虑以下示例 我有一个User集合 在我的客户端我有一个好友用户列表我有一个搜索功能 可以对整个用户数据库执行查询 返回一个与查询匹配的用户名列表 在发布
  • 如何使用 mongo-cxx-driver 设置 Visual Studio 项目设置?

    我已经在 Windows 10 上成功构建了用于 C 的 MongoDB 驱动程序版本 3 0 3 CMAKE INSTALL PREFIX C mongo cxx driver 但我不知道如何在 Visual Studio 2015 中设
  • MongoDb聚合

    如何使用 mongoDb 聚合编写模拟查询 select count as ccount from a group by a someField order by ccount desc limit 1 使用 mongoDb 中的 grou
  • Mongoose 多个连接

    目前我的连接有这个代码猫鼬 js var mongoose require mongoose var uriUtil require mongodb uri var mongodbUri mongodb localhost db name
  • MongoDB:如何使用单个命令更新多个文档?

    我惊讶地发现以下示例代码仅更新单个文档 gt db test save id 1 foo bar gt db test save id 2 foo bar gt db test update foo bar set test success
  • 如何决定使用哪种NoSQL技术? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 MongoDB 基于文档 HBase 基于列 和 Neo4j 对象图 的优缺点是什么 我特别有兴趣了解
  • Windows 7 机器上的 MongoDB:无法建立连接

    在 Windows 7 机器上使用 mongod exe 启动 Mongo 后 我尝试启动 mongo shell 但失败并出现以下错误 无法连接到 127 0 0 1 27017 原因 errno 10061 否 由于目标机器主动拒绝而无
  • Mongoose 查询:删除“_id”属性,在结果中保留虚拟属性“id”

    我正在运行 Express js 应用程序 并且有以下设置 模型 js var schemaOptions toJSON virtuals true toObject virtuals true var modelSchema new mo
  • Mongoose嵌入式文档更新

    我在嵌入式文档更新方面遇到问题 我定义的架构 var Talk new Schema title type String required true content type String required true date type D
  • 检索 mongoDB 文档中的空数组或 null

    我有我学校所有学生的收藏 每个文档都有一个sports列出每个学生从事的运动的数组属性 但该属性可能显示为sports or sports null或者根本不出现 如何检索属于上述三种情况之一的所有文件 如何向只有一项运动但未表示为数组的学
  • 带有卷的 docker 中的 Mongo db 持久化

    我正在尝试创建一个 mongo 数据库容器 但无法使数据持久化 这是我的 docker compose yml version 3 2 services mongodb image mongo 2 4 command smallfiles
  • Mongodb 通过查询和分组查找

    简单收集 id 123 name FooBar zone Bas id 456 name Alice zone Bas id 789 name FooBar zone Bas 首先 我构建一个查询来按名称查找所有元素 db collecti
  • MongoDB,从数组中删除对象

    Doc id 5150a1199fac0e6910000002 name some name items id 23 name item name 23 id 24 name item name 24 有没有办法从数组中提取特定对象 IE
  • MySQL 全文搜索不适用于某些单词,例如“house”

    我已经在 3 个字段中的一小部分记录上设置了全文索引 也尝试了 3 个字段的组合 并得到了相同的结果 有些单词返回结果很好 但某些单词如 house 和 澳大利亚 不这样做 有趣的是 澳大利亚 和 家乡 这样做 这似乎是奇怪的行为 如果我添
  • 使用 Spring Data MongoDB 查询纯 BSON

    是否可以在 Spring Data MongoDB 中查询纯 JSON BSON 数据 而无需将数据转换为实际的模型实现 我能找到的只是 MongoOperation 的
  • MongoDB自增ID

    MongodB 中自动生成的 ID 的大小为12 Bytes大整数的大小是8 bytes 我在 4 台运行 Ubuntu Server 的机器上有一个 mongodb 集群 但我现在只是在测试 插入只能通过一台服务器 即 Nodejs 服务
  • Mongoose.js instance.save() 回调未触发

    var mongo require mongoose var connection mongo createConnection mongodb 127 0 0 1 test connection on error function err
  • MongoDB:检查值是否为空或数组是否为空

    我想匹配所有不包含 公司 属性或 公司 值为空或空数组的文档 User find Company in null function err users if err throw err console log users length th
  • MongoDB 过滤嵌套对象中的数组元素

    我有一个文件如下 id ObjectId 56423b2558cb340599108b35 test source member abc member xyz 我想过滤数组元素 xyz 并且我正在尝试以下查询 db coll find te
  • 管理员未授权 Mongodb 执行 listDatabases 命令

    删除 mongodb 用户后 无法重新连接 mongo 没有 验证 我创造了超级用户 https docs mongodb org v2 6 reference built in roles superuser roles tomuser

随机推荐

  • 内存分配 char* 和 char[]

    这两者在内存分配方面有什么区别 char p1 hello char p2 hello 第一个创建了一个pointer变量 四个或八个字节的存储空间 具体取决于平台 并存储location那里有一个字符串文字 第二个创建一个array六个字
  • jQuery 里面的点击事件为

    我真的不知道我发生了什么事 代码如下 for var j 0 j
  • Android - 努力设计帐户选择器的样式

    我正在尝试在我的游戏中实现 AccountPicker 并且我尝试使用所有三个版本newChooseAccountIntent 2 来自AccountManager和一个来自AccountPicker 我的代码看起来像这样 if andro
  • PHP 中为什么有句点? [复制]

    这个问题在这里已经有答案了 可能的重复 如果在 php 字符串中间使用 句点 字符 是什么意思 https stackoverflow com questions 6104449 what does the period character
  • 将两个 byteBuffer 连接成一个

    您好 我有 2 个 byteBuffer 我想将它们连接在一起形成一个 byteBuffer 我在这里发现了类似的问题 但那里的建议都不适合我 你可以这样做 ByteBuffer b3 ByteBuffer allocate b1 limi
  • 什么时候删除 git 功能分支合适?

    我不想结束82 个特色分支悬挂在周围 https stackoverflow com questions 2353804 list git branches that can safely be deleted 所以我想知道将功能分支合并到
  • 如何用C/C++打开Chrome扩展程序中包含的文件?

    我正在尝试在 Chrome 扩展程序中打开一个要解析的文件 例如 config txt 通过 Javascript 这将相当容易 例如 chrome extension getURL config txt 会得到类似的东西chrome ex
  • 对 Intellij 产品中的控制台输出进行着色

    我有一个带有默认输出的自定义脚本 我想对错误 警告和信息进行着色 在 Intellij 产品 IDEA PhpStorm PyCharm 中有办法做到这一点吗 已经有一段时间了 但如果您仍然感兴趣 有一个用于控制台着色的新插件 与 Inte
  • 如何避免 IntelliTrace 事件中的 EF 查询被截断?

    我正在尝试调试实体框架查询 但是 当查询变得太大时 intelliTrace 中显示的查询会被截断 即使我将其复制并粘贴到记事本中 也仅显示查询的一部分 是否有任何解决方法可以获取 EF 生成的整个查询 提前致谢 已经有一段时间了 但它可能
  • 滚动时列表视图图像发生变化

    I am 解析 json数据在一个列表视图 图像视图和文本视图 首先四项列表视图的图像和文本视图正确添加但是当我滚动列表视图时 图像视图中的图像正在发生变化 这是我的代码 适配器 java public class Adapter exte
  • 角度插值无法正常工作?

    我有一个带有插值的样本 当使用任何一个事件时 它会正确显示下拉值 如下所示 sample click me https stackblitz com edit angular 234dlf file src 2Fapp 2Fapp comp
  • MSBuild (TFS) 中的 Nhibernate.Bytecode.Castle 问题

    我们有一个 Fluent NHibernate 映射测试正在本地计算机上通过 但是当我们签入 TFS 时 测试在构建服务器上失败 我们正在使用 MSTest 我们得到的错误是 NHibernate Bytecode UnableToLoad
  • 如何在不修改代码的情况下禁用在 pytest 中跳过测试?

    我继承了一些实现的代码pytest mark skipif进行一些测试 阅读 pytest 文档 我知道我可以添加条件 可能检查环境变量 或者使用更高级的功能pytest mark将测试组一起控制 不幸的是 到目前为止 文档中似乎没有任何内
  • 字幕与文字混合

    我尝试使用以下方法将字幕与纯文本分开two空格处 我的 Rmd 文档的第一部分如下所示 title Script de Limpieza errores de digitalizacion y division de base madre
  • 弱引用而不是 getActivity() (Android 避免内存泄漏)?

    为了避免内存泄漏 我编写了以下方法 该方法将在活动中使用 并且主要在片段中使用 使用继承 该方法应该允许我永远不会通过调用直接引用该活动 this or getActivity 方法是 private WeakReference
  • 以另一个用户身份运行任务

    使用卡皮斯特拉诺v3 我怎样才能跑all远程任务通过su作为另一个用户 我在官方文档中找不到任何内容 http capistranorb com http capistranorb com 对于我的用例 每个虚拟主机都有一个 SSH 用户和
  • 创建事件观察者以获得焦点?

    原型中是否可以有焦点事件冒泡 我试图避免在每个输入元素上分配一个观察者
  • python和node base64解码的区别

    我对这个base64解码问题感到困惑 似乎python和node js的做法不同 我相信 Node 正确地做到了这一点 有人能帮忙指出为什么 python 在这里不起作用吗 谢谢 Node gt console log Buffer fro
  • 构建进度条而不启动新线程

    我需要在 a 中添加一个进度条JFrame但我想更新这个栏而不生成新线程 例如摇摆工人后台更新栏 有没有办法更新当前线程 主 JFrame 的当前线程 中的进度条 详细信息 我有第一类 ChooseGUI 它扩展 JFrame 并调用第二类
  • MongoDB 全文搜索 + 部分单词匹配的解决方法

    由于使用 mongodb 全文搜索无法通过 blue 一词找到 blueberry 因此我想帮助我的用户将 blue 一词补全为 blueberry 为此 是否可以查询 mongodb 全文索引中的所有单词 gt 我可以使用这些单词作为建议