笔记
Posted YuYunTan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了笔记相关的知识,希望对你有一定的参考价值。
MongoDB实战第二版笔记(10)第九章笔记
1、文本搜索的几个特点:
- 搜索时大小写不敏感
- 如果输入java则搜索是看不到任何包含javascript的搜索结果。因为搜索引擎认为二者是不同单词。
2、方面索引,允许根据某个特性分组商品。同义词库,允许不同的词表示相同含义。词根分析允许找出单词的不同形式。分词是指在搜索前对关键字过滤。
3、方面索引可以让用户很方便基于某个条件进一步限制搜索结果的范围。
4、MongoDB可以做什么?
- 基于词根分析的自动化实时索引
- 根据字段名可选分配权重
- 多语言支持
- 分词
- 精确词汇匹配
- 根据给定短语或单词排除某些结果的能力
MongoDB不允许编辑分词列表。
5、MongoDB提供支持的细节:
- 首先定义文本搜索需要的索引
- 然后在基本查询和聚合框架里使用文本搜索
6、 $text
定义查询为文本搜索, $search
定义搜索使用的字符串。
db.hook.find($text:$search:'actions',title:1)
7、除了搜索任意数量的单词,指定"or"来组合多个搜索条件,MongoDB还允许做下面的事情
- 使用“and”代替"or"表示并且搜索关系
- 执行精确短语匹配【可以使用双引号分隔】
- 使用特定单词排除文档【单词前加上“-”号】
- 使用特定短语排除文档
8、聚合框架使用 $text
搜索的限制:
- 使用
$text
函数的$match
操作符必须是管道里的第一个操作,而且必须跟着其他的$meta:textScore
操作符 $text
函数只能在管道里出现一次$text
函数不能与$or
或$not
一起使用
9、使用$match
文本搜索字符串,格式必须与find()命令的格式一致。
- 如果单词或短语放在双引号,文本必须精确匹配
- 如果单词或短语前缀用了负号(-),就是用此条件排除文档
10、MongoDB无法识别复数或其他没有词根处理的非英文语音,除非告诉了它使用了哪种语言。有三种途径可以告诉:
- 索引中—可以为集合指定默认语言
- 插入文档时—可以重写某个文档或字段默认的语言,告诉MongoDB和索引指定的默认语言不同
- 当find()和aggregate()执行文本搜索时—可以告诉MongoDB搜索使用的语言。
11、支持的可用的语言
缩写 | 语言 | 缩写 | 语言 |
---|---|---|---|
da | danish | no | norwegian |
nl | dutch | pt | portuguese |
en | English | ro | romanian |
fi | finnish | ru | russian |
fr | french | es | spanish |
de | german | sv | swedish |
hu | hungarian | tr | turkish |
it | italian |
如果指定none,则会跳过词根处理和分词。
以上是关于笔记的主要内容,如果未能解决你的问题,请参考以下文章