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 文本索引
在 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 运算符,我们还可以通过将它们用双引号括起来来搜索精确的短语。只有那些包含短语的文档才会被匹配。
Sorting排序
MongoDB 默认以未排序的顺序返回结果。文本搜索查询将为每个文档计算最佳分数,该查询指定文档与查询的匹配程度。
db.library.find(
{ $text: { $search: "java" } },
{ score: { $meta: "textScore" } }
).sort( { score: { $meta: "textScore" } } )
在上面的示例中,我们显式地投影元 textScore 字段以按照相关性得分的顺序对结果进行排序。
热门文章
优秀文章