关于mongodb的全文检索

2024-03-25 12:48
文章标签 mongodb 全文检索

本文主要是介绍关于mongodb的全文检索,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.在fulltextserach 需要用到切词,切词和语言有关,所以需要设置语言,目前不支持中文,只支持如下的:

http://blog.csdn.net/terry_water/article/details/43671749

2.在使用前,在mongodb需要用命令行设置text索引

设置单个字段索引:

db.catalog_product.ensureIndex({description: "text"})

设置多个二级字段全文索引:(同时设置权重)

db.catalog_product.ensureIndex({'name.en_name':'text' ,'description.en_description': 'text'}, {weights: {'name.en_name': 10,'description.en_description':5} });
设置语言:

db.de.ensureIndex( {txt: "text"}, {default_language: "german"} )


在这里需要注意的是,一个表只能设置一种语言,如果在一个表中,如果存在多个语言的字段,需要先拆分到几个分表,然后设置text

参考:http://www.oschina.net/translate/mongodb-text-search-tutorial

对于我的需求,需要的设置为:

db.catalog_product.ensureIndex({'name.en_name':'text' ,'description.en_description': 'text'}, {weights: {'name.en_name': 10,'description.en_description':5} },{default_language: "german"});

这种只能对一种语言搜索,因此需要通过脚本,保存到另外一个表:

fulltextsearch_en_catalog_product

fulltextsearch_fr_catalog_product

fulltextsearch_de_catalog_product

fulltextsearch_es_catalog_product

fulltextsearch_it_catalog_product


因此,把_id,name和description保存到对应的表中,对这几个表查询即可。

通过yii2 mongodb模块的方法:

$mongodb = Yii::$app->mongodb;
        $data = $mongodb->getCollection("catalog_product")->fullTextSearch("iphone",[],['_id']);

这个方式执行查询产品即可,通过返回的product_id,然后结果其他进行继续查询。






这篇关于关于mongodb的全文检索的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/845063

相关文章

Go Mongox轻松实现MongoDB的时间字段自动填充

《GoMongox轻松实现MongoDB的时间字段自动填充》这篇文章主要为大家详细介绍了Go语言如何使用mongox库,在插入和更新数据时自动填充时间字段,从而提升开发效率并减少重复代码,需要的可以... 目录前言时间字段填充规则Mongox 的安装使用 Mongox 进行插入操作使用 Mongox 进行更

使用Python实现操作mongodb详解

《使用Python实现操作mongodb详解》这篇文章主要为大家详细介绍了使用Python实现操作mongodb的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、示例二、常用指令三、遇到的问题一、示例from pymongo import MongoClientf

使用MongoDB进行数据存储的操作流程

《使用MongoDB进行数据存储的操作流程》在现代应用开发中,数据存储是一个至关重要的部分,随着数据量的增大和复杂性的增加,传统的关系型数据库有时难以应对高并发和大数据量的处理需求,MongoDB作为... 目录什么是MongoDB?MongoDB的优势使用MongoDB进行数据存储1. 安装MongoDB

生产mongodb 分片与集群 方案

链接:http://my.oschina.net/pwd/blog/411439#navbar-header 注:主要是有一键安装的脚本可以借鉴

mongodb基本命令和Java操作API示例

1.Mongo3.2 java API示例:http://www.cnblogs.com/zhangchaoyang/articles/5146508.html 2.MongoDB基本命:http://www.cnblogs.com/xusir/archive/2012/12/24/2830957.html 3.java MongoDB查询(一)简单查询: http://www.cnblogs

使用jetty和mongodb做个简易文件系统

使用jetty和mongodb做个简易文件系统 - ciaos 时间 2014-03-09 21:21:00   博客园-所有随笔区 原文   http://www.cnblogs.com/ciaos/p/3590662.html 主题  MongoDB  Jetty  文件系统 依赖库: 1,jetty(提供http方式接口) 2,mongodb的java驱动(访问mo

mongodb简单入门

一篇较好的mongodb常用操作命令:http://www.cnblogs.com/hoojo/archive/2011/06/01/2066426.html mongodb的java操作:http://www.cnblogs.com/cyhe/p/5451421.html

mongodb自启动脚本.md

可粘贴文本(不全): #!/bin/sh##chkconfig: 2345 80 90#description:mongodb#processname:mongodbif test -f /sys/kernel/mm/transparent_hugepage/enabled; thenecho never > /sys/kernel/mm/transparent_hugepage/e

MongoDB学习—(6)MongoDB的find查询比较符

首先,先通过以下函数向BookList集合中插入10000条数据 function insertN(obj,n){var i=0;while(i<n){obj.insert({id:i,name:"bookNumber"+i,publishTime:i+2000})i++;}}var BookList=db.getCollection("BookList")调用函数,这样,BookList

MongoDB学习—(5)修改器$inc,$unset,$push,$pushAll,$allToSet,$pop,$pull,$pullAll

通过db.help()可以查询到关于数据库的操作,一查询发现有很多方法 其中有一个方法为db.getCollection(cname),即通过这一个函数,传入数据库中的一个集合的名称来获取到该集合的一个对象,我们可以编写函数   function insertTenRecord(obj){ var i=0; while(i++<10){ obj.insert({id:i+1,a