mongodb atlas中的基本文本搜索和过滤文本搜索有什么区别?

问题描述 投票:0回答:1

我有一个简单的用例,给定一个术语,我想在atlas中启动搜索查询,在mongo文档中搜索该关键字,并且我创建了带有附加存储源字段的搜索索引。

现在我有两种正在尝试运行的查询,如下所示:

第一:

    {
    text: {
      query: searchKey,
      path: ['title', 'description'], // Search on both title and description
    },
    returnStoredSource: true,
    }

第二:

{
compound: {
  filter: [
    {
      text: {
        query: searchKey,
        path: 'title', // Search on title
      },
    },
    {
      text: {
        query: searchKey,
        path: 'description', // Search on description
      },
    },
  ],
},
returnStoredSource: true,
}

两者都被执行,但第二个需要更多时间,我无法理解两者的区别,我只想在两个字段

title
description
中进行简单的关键字匹配搜索。

有人可以帮忙吗?

mongodb mongoose nosql full-text-search mongodb-atlas
1个回答
1
投票

您的两个查询都在 MongoDB Atlas 搜索索引中的“标题”和“描述”字段上执行文本搜索。但是,第一个查询直接使用文本查询类型,而第二个查询使用具有两个单独文本查询的复合查询类型。

主要区别在于,第一个查询在“标题”或“描述”字段中搜索 searchKey,而第二个查询在“标题”字段和“描述”字段中分别搜索 searchKey。

以下是差异的细分以及为什么第二个查询可能需要更多时间:

1:您的第一个查询使用文本查询类型同时在“标题”和“描述”字段中搜索 searchKey。它将返回 searchKey 出现在任一字段中的文档。

2:您的第二个查询使用复合查询类型,其中包含两个单独的文本查询。每个文本查询都会在“标题”或“描述”字段中搜索 searchKey。复合查询结合了这两个查询的结果。这种方法可能效率较低,因为它执行两次单独的搜索,然后组合结果。

如果您的目标是在“标题”和“描述”字段中进行简单的关键字匹配搜索,则第一个查询(直接使用文本查询)更合适。它在任一字段中搜索关键字,并且与第二个查询相比应该更有效。

© www.soinside.com 2019 - 2024. All rights reserved.