mongodb的文本搜索
1、当mongodb进程文本搜索的时候,
一个collection,只有一个文本查询的索引、
2、全文索引的定义,搜索的是有意义的词,不是字母
一开始是简单的用中文姓名的姓,如:张,来查询,但是无效,或者简单用一个英文字符来测试,如:o ,但是两次都无效。。。。
3、中文词与词之间没有空格,所以没法有效地分词。缺乏有效的分词器就是为什么不支持中文的原因。
在中文里面要进行有效的文本查询,需要有效的分词器
这种说法也不对,应该是必须分词,不用空格,用-试过,也是ok的。
4、文本搜索查询
db.user.find({$text:{$search:'张 海 峰'}},{score:{$meta:"textScore"}}).sort( { score: { $meta: "textScore" } } )
5、权重。。,即当文本搜索所占比重的成分
上面说到一个collection只有一个文本搜索,但是能够包含多个 字段,还存在4中的分数,而这几个字段在能够看所占的权重。。。。
首先是在新建索引的的设置好。。
db.blog.createIndex( { Addr: "text", name: "text", username: "text", data: "text" }, { weights: { name: 10, usernaem: 5, data: 5 }, name: "TextIndex" } )
由name所占比例较大,即优先级不同。。。。故先选了name这份字段。。。再是username,,,
6、数据库内的Array[String]的不同的表现形式。。。
(1)、
case class TU ( Addr:List[String] ) extends ModelBase[Document] { override def to: Document = { var doc= Document("Addr" -> this.Addr) doc } } //查询出来的 List(Document((_id,BsonObjectId{value=5e2023b1e640cf7a0b589da8}), (Addr,BsonArray{values=[BsonString{value='珠海市居民房12号'}, BsonString{value='台湾市居民房12号'}]})))
(2)、