MongoDB 文本搜索

MongoDB 文本搜索

MongoDB使用查询操作对字符串内容进行文本搜索。它使用文本索引和运算符来执行文本搜索。

示例:

它向您展示了“如何构建文本索引并使用它来查找您的图书”。

现在,您需要按照以下步骤创建一个名为“ library ”的集合:

db.stores.insert(
   [
     { _id: 101, name: "Java", description: "By ABC" },
     { _id: 102, name: "MongoDB", description: "By XYZ" },
     { _id: 103, name: "Python", description: "By ABCD" },
     { _id: 104, name: "Engineering Mathematics", description: "By *****" },
     { _id: 105, name: "Salesforce", description: "By Salesforce" }
   ]
)

文本索引

在MongoDB中,我们可以使用文本索引来支持对字符串内容进行文本搜索查询。具有任何字符串值或字符串元素数组的字段可以通过文本索引进行包含。

在我们的集合中必须有一个文本索引来执行文本搜索查询。在一个表/集合中,我们只能有一个文本搜索索引。但是可以有多个字段被单个索引覆盖。

我们可以在Mongo shell中运行以下示例,以使文本搜索覆盖名称和描述字段:

db.library.createIndex( { name: "text", description: "text" } )

$text 运算符

我们可以使用 $text 运算符对具有文本索引的表进行文本搜索。$text 运算符将使用空白和大部分标点符号作为分隔符来标记搜索字符串。$text 运算符对搜索字符串中的所有此类标记执行逻辑 OR 操作。

在下面的示例中,我们可以使用查询来查找所有包含与“MongoDB”、“Java”、“DBMS”等相关书名的图书馆。

db.library.find( { text: {search: "Java" } } )

使用 $text 运算符,我们还可以通过将它们用双引号括起来来搜索确切的短语。只有包含这些短语的文档才会匹配。

例如 –

db.library.find( { text: {search: "\"Java Book\"" } } )

排序

MongoDB默认以未排序的方式返回结果。每个文档都将通过文本搜索查询计算一个最佳分数,该查询指定了文档与查询的匹配程度。

db.library.find(
   { text: {search: "java" } },
   { score: { meta: "textScore" } }
).sort( { score: {meta: "textScore" } } )

在上面的示例中,我们明确地投影了meta textScore字段,以便按相关性得分排序结果。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程