mongodb 全文搜索—ttlsa教程系列之mongodb(十)

mongodb full text search(fts:全文搜素)是在版本2.4新加的特性。在以前的版本,是通过精确匹配和正则表达式来查询,这效率是很低的。全文索引,能够从大量的文本中搜索出所需的内容,内置多国语言和分词方法。不支持宇宙第一语言—中文。
全文索引会导致mongodb写入性能下降,因为所有字符串都要拆分,存储到不同地方。

全文索引是一种技术,并大量的使用。如搜索引擎,站内搜索等等。常使用到的全文搜索有:
lucene
sphinx
redis-search
riak search
不过,对中文的搜索不尽如人意。

mongodb用的是开源的snowball分词器,参见http://snowball.tartarus.org/texts/stemmersoverview.html
mongodb 全文索引支持的语言有:
danish
dutch
english
finnish
french
german
hungarian
italian
norwegian
portuguese
romanian
russian
spanish
swedish
turkish

如果希望使用其他语言,需要在创建索引时指定要使用的语言。默认是支持英文的。

1. 启用全文索引

默认是关闭的。否则会报错”err” : “text search not enabled”

2. 插入测试数据
下面是插入一些《加州旅馆》这首二十世纪非常著名的流行音乐。

3. 创建全文索引

4. 查看索引信息

5. 查询
全文索引是通过

来查询的,非通过find()命令来实现的。

取反:在要搜索的单词前面加上“-”,排除包含该单词的记录。

分词效果不是很理想。如

就搜索不到的。

上面说到了,mongodb是不支持中文搜索的。
要用到复杂的搜索功能,还是用sphinx。sphinx内容可以参见:http://www.ttlsa.com/?s=sphinx

如需转载请注明出处:mongodb 全文搜索http://www.ttlsa.com/html/2230.html