mongodb的全文检索依靠的是标签和索引
它的文档里有一个数组,数组里存放着搜索时需要用的关键字,参考:
textOne = {
title: "Apollo",
text: "Some text about Apollo moon landings",
tags: [ "moon", "apollo阿波罗号", "航天","text"]
};
其中testOne我存放在articles文档里,gitHub示例
搜索的时候我们只要按照tags里面的词(数组的key不一定必须命名为tags)进行查找就行了,
可以使用db.articles.findOne({tags:"航天"})
也可以使用db.articles.find({tags:"apollo阿波罗号"})进行查找
我测试过,中英文查找都可以
使用全文检索的时候就是先把文章进行分词,然后使用存放分词的数组进行查找就可以了,实质就是使用标签功能,官网是这样举例的:
{ title : "this is fun" ,
_keywords : [ "this" , "is" , "fun" ]
}
这样的检索方式就需要我们自己先写代码給文章分词。
我简单写了个正则表达式来分词:
var str="this is a test text.";
var tmp = str.split(/\s+|\.+|,+/);//用空格,句号,逗号分隔开
console.log(tmp);
这样的全文检索不太适合大段的文字,适合那些比较长的标题进行进行查找。