MongoDb:查找包含与给定字符串匹配的标签/关键字的文档

时间:2017-08-02 09:28:31

标签: mongodb symfony doctrine-odm

我有一个集合(Foo),它有“关键字”字段。我想找到与给定字符串匹配的文档(至少有一个匹配的关键字),并按匹配数对它们进行排序。

Foo:
{name: 'Foo1', keywords: ['example', 'sample', 'keywords']},
{name: 'Foo2', keywords: ['keywords example', 'find']},
{name: 'Foo3', keywords: ['search']},
{name: 'Foo4', keywords: ['example keywords', 'find', 'example', 'search']}

因此,字符串"This is example keywords search"应按此顺序返回文档:

  1. Foo4(3场比赛 - '示例关键字','示例','搜索')
  2. Foo1(2场比赛 - '示例','关键字')
  3. Foo3(1场比赛 - '搜索')
  4. 如果它有所作为,我正在使用Symfony3和DoctrineODM。谢谢大家的帮助!

1 个答案:

答案 0 :(得分:1)

MongoDB支持每个文档的匹配计数,甚至可以create a text index which observes multiple fields with custom weights。 (放弃为其他数据库构建的任何自动关键字检测甚至是有用的。)