- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我对 Morphia 还很陌生, MongoDB ,以及一般的面向文档的数据库。我正在寻找有关如何解决以下问题的一般指导。
我们有一个包含大约 500K Book
文档的数据库。
{
"isbn" : "0-691-01305-5",
"title" : "For Whom the Bell Tolls",
"titleFTS" : [
"bell",
"toll" ],
"author" : "Hemingway, Ernest",
"ratingsCount" : 138,
"rating" : "3.5",
"sales" : 10245
"price" : "12.95",
"category" : "fiction",
"description" : "The story of a young American in the International Brigades attached to a republican guerilla unit during the Spanish Civil War.",
"descriptionFTS" : [
"story",
"young",
"americ",
"internat",
"brigade",
"attach",
"republic",
"guerilla",
"unit",
"spanish",
"civil",
"war"]
}
我们需要对标题和描述字段执行全文搜索。为此,我创建了 titleFTS
和 descriptionFTS
数组,分别包含来自 title
和 description
字段的单词,过滤停用词,然后进行词干提取。
搜索时,用户输入关键词,我们返回匹配所有输入词的图书,例如:
db.Book.find({ titleFTS : { $all: ['spanish', 'civil', 'war']}})
db.Book.find({ descriptionFTS : { $all: ['spanish', 'civil', 'war']}})
这工作正常,但现在我们来到了困难的部分:我们想根据多个条件对上述查询的结果进行排序。一种这样的建议顺序如下:
titleFTS
和 descriptionFTS
字段中匹配搜索词的图书titleFTS
字段中匹配的书籍descriptionFTS
字段中匹配的书籍销量最高的图书
评分
的书籍ratingscount
最高的书我们的应用程序是用 Java 编写的,并使用 MorphiaDB API。我可以想象如何编写 Java Comparator对于这种事情很容易,但显然我想在数据库级别进行排序。
这最终让我想到了一个问题:这可以使用 Morphia API 来完成吗?或者我是否需要深入研究使用 DB.command() 编写 Javascript?它需要 Map/Reduce 吗?如果是这样,关于如何针对此问题实现 map/reduce 的提示将大有帮助。
最佳答案
我现在强烈建议使用外部全文引擎,例如 Solr 或 ElasticSearch。MongoDB全文搜索相关的能力确实不适合对于真正的全文解决方案。您使用预词干等方法只是一种肮脏的解决方法。只要 MongoDB 不提供合适的全文集成,如果您对严肃且有效的解决方案感兴趣,就可以使用外部解决方案。
关于mongodb - 吗非亚/MongoDB : ordering search results from advanced queries,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5045146/
今天,我在 Windows 10 的“程序和功能”列表中看到了 2 个不同版本的 ARC,因此我选择卸载旧版本,因为我需要一些空间。在卸载结束时,它们都消失了! 所以,我从 https://insta
我刚买了一台更强大的电脑,安装了 composer 并想继续我的项目,但是当我使用 gii 时,它给了我这个错误。 我该如何解决?为什么我得到它?谢谢你。 最佳答案 解决了。自 2.0.13 起,类名
1、介绍 这是我的《Advanced .Net Debugging》这个系列的第十一篇文章,也是这个系列的最后一篇了。我已经把原书的前八章内容全部写完了,本来打算继续写第九章和第十章的内容,后
一、介绍 这是我的《Advanced .Net Debugging》这个系列的第十篇文章。这篇文章的内容是原书的第三部分的【高级主题】的第八章【事后调试】。前面几篇文章,我们介绍了很多工具,可以
一、介绍 这是我的《 Advanced .Net Debugging》这个系列的第八篇文章。这篇文章的内容是原书的第二部分的【调试实战】的第六章【同步】。我们经常写一些多线程的应用程序,写的多
一、介绍 这是我的《 Advanced .Net Debugging》这个系列的第九篇文章。这篇文章的内容是原书的第二部分的【调试实战】的第七章【互用性】。互用性包含两个方面,第一个方面就是托
一、简介 这是我的《Advanced .Net Debugging》这个系列的第七篇文章。这篇文章的内容是原书的第二部分的【调试实战】的第五章,这一章主要讲的是从根本上认识托管堆和垃圾回收。软件
一、简介 这是我的《 Advanced .Net Debugging》这个系列的第六篇文章。这篇文章的内容是原书的第二部分的【调试实战】的第四章。这章主要讲的是程序集加载器,比如:CLR 加载
一、简介 我曾看到过许多开发人员使用错误的工具来分析问题,更有甚者,有些人连任何工具都没有使用。他们采取的分析方法通常包括:输出更多的调试信息,或者做一
一、简介 我曾看到过许多开发人员使用错误的工具来分析问题,更有甚者,有些人连任何工具都没有使用。他们采取的分析方法通常包括:输出更多的调试信息,或者做一
一、简介 我曾看到过许多开发人员使用错误的工具来分析问题,更有甚者,有些人连任何工具都没有使用。他们采取的分析方法通常包括:输出更多的调试信息,或者做一
我是 yii2 的新手,当我使用 从存档中提取 yii2 高级内容时《基本应用模板》、《带有高级应用模板的Yii 2》当我在服务器上上传时,它显示空白页面。 我检查了 yii2 basic 它工作正常
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 6 年前。 Improve this ques
如果我遗漏了任何重要的细节,我想提前道歉。 我正在尝试执行升级,在安装新版本之前应删除以前版本的软件(和所有组件)。 我会尽量避免让您厌烦细节,并说如果您进行“典型”安装,一切都会按计划进行。如果您选
您好,我正在尝试创建一个存储整数或字符串元素的通用列表迭代器。我正在尝试测试它调用 IteratorG advance(IteratorG it, int n) 函数的情况,该函数采用在列表 it 中
我想知道是否有任何可能的方法,使 MySQL 查询可以动态搜索 WHERE 子句中的任何内容。 例如,如果查询是 Select * from table where item = 'Dell Opti
我正在使用 PayPal Advanced,并使用用户定义的字段 USER1 - USER10 发送一些交易数据,这将帮助我在通过 Silent Post 请求返回时识别它。有谁知道这些 USERx
这个问题在这里已经有了答案: How to use "distanceTo", "advancedBy" to handle String in Xcode7 beta6 (2 个答案) 关闭 7
请告诉我如何提前获得 transactionHash? // I have these tx opts: var txOpts = { "to":"0x345cA3e014Aaf5dcA48805
我正在尝试使用 Eloquent 创建类似的东西。但是,我在使用 or 子句时遇到了麻烦。 SELECT * FROM table WHERE column1 = 1 AND column2 = 2
我是一名优秀的程序员,十分优秀!