文本索引
在本页面
MONGODB地图搜索
文本索引版本 | 描述 |
---|---|
版本3 | MongoDB引入了 text 索引的第3版。版本3是text 在MongoDB 3.2和更高版本中创建的索引的默认版本。 |
版本2 | MongoDB 2.6引入了 text 索引的版本2 。版本2 是text 在MongoDB 2.6和3.0系列中创建的索引的默认版本。 |
版本1 | MongoDB 2.4引入了 text 索引的版本1 。MongoDB 2.4仅支持版本1 。 |
要覆盖默认版本并指定不同的版本,在创建索引时包括选项**{"textIndexVersion":
<version>
}**。[success] 重要一个集合最多可以有一个text
索引。
若要创建
text
索引,请使用 db.collection.createIndex()
方法。若要索引包含字符串或字符串元素数组的字段,请包含该字段并在索引文档中 指定字符串字面量“text”
,如下例所示:db.reviews.createIndex( { comments: "text" } )
您可以为索引建立多个字段的
text
索引。以下示例text
在字段subject
和 comments
上创建索引:db.reviews.createIndex(
{
subject: "text",
comments: "text"
}
)
对于文本索引,索引字段的权重表示该字段相对于其他索引字段在文本搜索分数方面的重要性。
在多个字段上创建文本索引时,还可以使用通配符说明符(
$**
)。通过通配符文本索引,MongoDB为集合中每个文档包含字符串数据的每个字段建立索引。下面的示例使用通配符创建一个文本索引:db.collection.createIndex( { "$**": "text" } )
该索引允许对所有具有字符串内容的字段进行文本搜索。如果不清楚在文本索引中包含哪些字段或用于特殊查询,那么这种索引对于高度非结构化数据非常有用。
通配符文本索引(与所有文本索引一样)可以是复合索引的一部分。例如,下面在字段
a
以及通配符上创建一个复合索引:db.collection.createIndex( { a: 1, "$**": "text" } )
在版本3.2中更改
此案的大小写扩展文本索引包括字符不区分大小写的区分标志,如
é
和É
,从非拉丁字母和字符,如“И”和“и”西里尔字母。以前版本的文本索引只对[
A-z
]不区分大小写;例如,只对非变音符拉丁字符不区分大小写。对于所有其他字符,早期版本的文本索引将它们视为不同的字符。在版本3.2中更改
text
索引的早期版本将带变音符号的字符视为不同的字符。在版本3.2中更改
对于符号化,第3版
text
索引使用下分类的分隔符Dash
,Hyphen
,Pattern_Syntax
, Quotation_Mark
,Terminal_Punctuation
,和White_Space
中 的Unicode 8.0字符数据库道具列表。在Unicode 8.0字符数据库Prop列表中,版本3文本索引使用分界符分类在破折号、连字符、
Pattern_Syntax
、Quotation_Mark
、Terminal_Punctuation
和White_Space
中。例如,如果给定的一个字符串,该索引对待,和空格作为分隔符。
"Il a dit qu'il «était le meilleur joueur du monde»"``text``«``»
例如,如果给定一个字符串**“Il a dit qu'il«etait le meilleur joueur du monde»”**,文本索引将
«,»
和空格作为分隔符。该指数治疗的早期版本
«
作为术语的一部分 "«était"
,and»
作为长期的一部分"monde»"
。如果您将语言值指定为
"none"
,则text
索引将使用简单的标记化,不包含停止词列表和词干分析。对于包含
text
索引键和其他类型的键的复合索引,只有text
索引字段才能确定索引是否引用文档。其他键不能确定索引是否引用文档。一个集合 最多可以有一个
text
索引。