我对mongodb query builder很陌生,并试图结合query builder和mongodb在php(Symfony2.6)中进行全文搜索。然后,在我的操作中,我有以下查询:
$dm = $this->getDoctrineMongoDB()->getManager();
$qb = $dm->createQueryBuilder('MyBundle:MyCollection');
$expr = $qb->expr()->operator('$text', array(
'$search' => 'I love stackoverflow',
'$language' => 'none', // or one of those other languages
),
array('score' => array('$meta' => 'textScore'))
);
$qb->field(null)->equals($expr->getQuery());
$qb->sort(array('score' => array('$meta' => 'textScore')));
此查询返回所需的结果,但不对其进行排序。我的意思是,它不会根据与查询匹配的每个文档的得分对结果进行排序。我已经研究了mongoDb中的所有文本搜索和排序文档以及堆栈溢出解答,如php、mongoDb全文搜索和排序以及mongoDb+原则:如何按文本搜索得分对查询进行排序,但没有一个帮助我修复这种基于文本得分的查询排序。我真的需要你的帮助,我将非常感谢你的每一点帮助。
幸运的是,我找到了问题的答案。我的教义mongodb很旧,这就是为什么query builder不能识别sortMeta()方法的原因,所以我将教义/mongodb版本1.0升级到了上一个版本1.2.x-dev,下面的代码从这个链接中获得了mongodb+Dection:How to sort thy text search score。
问题内容: 我有一些文档有两个字段:文本,计数。 我曾经为文档编制索引,现在我想在文本中搜索并按降序将结果按计数排序。我怎样才能做到这一点? 问题答案: Apache Lucene的默认搜索实现返回按分数(最相关的结果排在最前),然后按ID(最旧的结果排在前)的结果。 可以在查询时使用附加的Sort参数自定义此行为。 TopFieldDocs Searcher#search(查询查询,过滤器过滤器
问题内容: 我对MYSQL相对较新,遇到了困扰我一段时间的问题。我已经尝试在所有地方使用Google搜索来寻找答案,但到目前为止仍无法找到可接受的解决方案。 这是我当前正在运行的查询,用于查找给定搜索词的最佳匹配项: 它返回的结果是全面的,因为它们包括所有相关的行。但是,它们没有按照任何特定的顺序排序,我希望在用PHP打印结果时首先显示完全匹配的匹配项。像这样: 1 | 字<精确匹配 2 | 填字
问题内容: 假设我将这样的文档存储在ElasticSearch中: 假设我使用location = CA进行搜索,如何根据“标签”中项目的数量对结果进行排序? 我想在首页中列出标签数量最多的人。 问题答案: 您可以为包含标签数量的其他字段建立索引,然后在其上轻松地对结果进行排序。否则,如果您愿意在查询时付出一点性能成本,那么有个不错的解决方案不需要重新索引数据:您可以根据如下脚本进行排序: 从基于
我有弹性搜索的问题。接缝搜索项在搜索结果中被隔离。 我们有一个使用弹性搜索索引的大型字幕数据库。然而,我们的搜索会在搜索词被隔离的地方对搜索结果进行优先排序。 Ie:搜索“吃”会产生: 哦,跳伞跳伞哦,我找到了疯狂饮食吃,吃传球,传球你们这些家伙真烂那是什么花样游泳 和 这是我的最后一晚,所以我们要像没有明天一样生活我想我只是想,吃点东西带上所有的食物,不管是麦当劳,还是冰淇淋。 我们需要INST
问题内容: 我有这样的Elasticsearch数据- 在此示例中,我进行了全文搜索,正在“ text”字段中搜索所有具有“ unemployment”子字符串的文档。最后,我希望所有文档以“文本”字段中“失业”字符串的索引值的升序排列。例如- 子字符串“失业”首先在doc2中的索引“ 4”处出现,因此我希望此文档在结果中首先返回。 我尝试了一些诸如term_vector这样的事情,这是我使用的映
目前,我有一个名为的,看起来像这样,其中几何体表示一个点(纬度、经度)。 给定另一个点(lat,long),我想找到从这个数据框到那个特定点的最近点。我用距离函数计算了最近的点 现在我有一个系列,看起来像这样 我怎样才能得到一个Geodataframe的副本,它按相同的顺序排序,如下所示?谢谢