文档菜单
文档首页
/ / /
Mongoid
/

文本搜索

本页内容

  • 定义文本搜索索引
  • 创建文本索引
  • 使用文本索引进行查询

MongoDB 提供文本索引以支持对字符串内容的文本搜索查询。文本索引可以包括任何值是字符串或字符串元素数组的字段。

注意

MongoDB Atlas 还提供了Atlas Search,这是一个更强大且灵活的文本搜索解决方案。本节剩余部分将讨论文本索引,而不是 Atlas Search。

要使用Mongoid进行文本搜索,请按照以下步骤操作:

  1. 在模型上定义文本索引。

  2. 在服务器上创建文本索引。

  3. 构建文本搜索查询。

在Mongoid的索引页面上详细描述了索引定义。文本搜索索引在MongoDB手册的文本索引部分有详细描述。以下是一个使用描述字段创建Band模型文本索引的示例定义

class Band
include Mongoid::Document
field :name, type: String
field :description, type: String
index description: 'text'
end

请注意,索引类型(text)必须以字符串的形式给出,而不是作为符号。

要创建索引,请调用db:mongoid:create_indexes Rake任务

bundle exec rake db:mongoid:create_indexes

要查找描述中包含“ounce”或其变体的波段,请使用$text 操作符

Band.where('$text' => {'$search' => 'ounces'}).to_a
# => [#<Band _id: 5d5341b3ce4ef35d5016746d, name: "foo", description: "ounce">]

注意,尽管搜索查询是“ounces”,描述中仍然包含单词“ounce”。

另外,在执行文本搜索时,字段名称没有明确指定 - $text 操作符搜索所有使用文本索引索引的字段。

返回

查询