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)、

posted @ 2020-01-15 17:50  ~~。  阅读(966)  评论(0编辑  收藏  举报