CN105138649B - 数据的搜索方法、装置及终端 - Google Patents
数据的搜索方法、装置及终端 Download PDFInfo
- Publication number
- CN105138649B CN105138649B CN201510531673.4A CN201510531673A CN105138649B CN 105138649 B CN105138649 B CN 105138649B CN 201510531673 A CN201510531673 A CN 201510531673A CN 105138649 B CN105138649 B CN 105138649B
- Authority
- CN
- China
- Prior art keywords
- index
- data
- module
- user
- modified
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2237—Vectors, bitmaps or matrices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/14—Details of searching files based on file metadata
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/80—Information retrieval; Database structures therefor; File system structures therefor of semi-structured data, e.g. markup language structured data such as SGML, XML or HTML
- G06F16/81—Indexing, e.g. XML tags; Data structures therefor; Storage structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Library & Information Science (AREA)
- Computing Systems (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开是关于数据的搜索方法、装置及终端,该方法包括:在非关系型数据库中读取与第一用户标识对应的第一序列化数据;对所述第一序列化数据进行反序列化处理,得到第一索引;基于所述第一索引进行搜索。应用本公开实施例,服务器可以在NoSQL数据库中读取与用户标识对应的序列化数据,并将序列化数据反序列化为索引,从而基于索引进行搜索。由于搜索的范围是针对与用户标识对应的数据,而非所有用户,因而搜索范围大大缩小,从而提高了搜索速度和搜索性能,优化了用户体验。
Description
技术领域
本公开涉及数据处理技术领域,尤其涉及一种数据的搜索方法、装置及终端。
背景技术
随着终端的功能越来越多,用户使用终端产生的数据也越来越多。为了尽量少占用终端内存,避免终端因存储空间太小而影响了使用性能,用户可以将个人数据同步到云端进行存储。通常,云端服务器为用户提供个人数据的检索功能,比如基于用户提供的关键词,在上万条短信中查找包含该关键词的短信。
相关技术中,云端服务器基于结构化查询语言(Structured Query Language,SQL)实现用户个人数据的搜索。但是由于SQL不易扩展,尤其在用户数目较多的时候,云端存储的个人数据的总量非常大,这种情况下服务器搜索的范围是所有用户的个人数据,搜索效率较低,搜索速度较慢,安全性也较差,因而用户体验较差。
发明内容
本公开提供了一种数据的搜索方法、装置及终端,以解决相关技术中服务器对用户数据进行搜索时搜索效率较低、搜索速度较慢的问题。
根据本公开实施例的第一方面,提供一种数据的搜索方法,包括:
在非关系型数据库中读取与第一用户标识对应的第一序列化数据;
对所述第一序列化数据进行反序列化处理,得到第一索引;
基于所述第一索引进行搜索。
可选的,在所述在非关系型数据库中读取与第一用户标识对应的第一序列化数据之前,所述方法还包括:
获取第一用户数据和对应的第一用户标识;
对所述第一用户数据建立第一索引;
对所述第一索引进行序列化处理,得到第一二进制字符串;
将所述第一二进制字符串与所述第一用户标识关联存储到所述非关系型数据库中,所述第一序列化数据包括所述第一二进制字符串。
可选的,所述基于所述第一索引进行搜索,包括:
将所述第一索引存储到内存中;
在内存中基于所述第一索引进行搜索。
可选的,所述方法还包括:
响应于接收到修改请求,对第二用户标识对应的第二索引进行修改,所述修改请求包括所述第二用户标识。
可选的,所述响应于接收到修改请求,对第二用户标识对应的第二索引进行修改,包括:
在非关系型数据库中读取与所述第二用户标识对应的第二序列化数据;
对所述第二序列化数据进行反序列化处理,得到第二索引;
基于所述修改请求对所述第二索引进行修改;
将修改后的第二索引进行序列化处理,得到修改后的第二序列化数据;
将所述非关系型数据库中存储的第二序列化数据更新为修改后的第二序列化数据。
可选的,所述基于所述修改请求对所述第二索引进行修改,包括:
将所述第二索引存储到内存中;
在内存中对所述第二索引进行修改。
根据本公开实施例的第二方面,提供一种数据的搜索装置,包括:第一读取模块、第一处理模块及搜索模块;
所述第一读取模块,被配置为在非关系型数据库中读取与第一用户标识对应的第一序列化数据;
所述第一处理模块,被配置为对所述第一序列化数据进行反序列化处理,得到第一索引;
所述搜索模块,被配置为基于所述第一索引进行搜索。
可选的,所述装置还包括:获取模块、索引建立模块、第二处理模块及存储模块;
所述获取模块,被配置为获取第一用户数据和对应的第一用户标识;
所述索引建立模块,被配置为对所述第一用户数据建立第一索引;
所述第二处理模块,被配置为对所述第一索引进行序列化处理,得到第一二进制字符串;
所述存储模块,被配置为将所述第一二进制字符串与所述第一用户标识关联存储到所述非关系型数据库中,所述第一序列化数据包括所述第一二进制字符串。
可选的,所述搜索模块包括:第一存储子模块及搜索子模块;
第一存储子模块,被配置为将所述第一索引存储到内存中;
搜索子模块,被配置为在内存中基于所述第一索引进行搜索。
可选的,所述装置还包括:修改模块;
所述修改模块,被配置为响应于接收到修改请求,对第二用户标识对应的第二索引进行修改,所述修改请求包括所述第二用户标识。
可选的,所述修改模块包括:读取子模块、第一处理子模块、修改子模块、第二处理子模块及更新子模块;
所述读取子模块,被配置为在非关系型数据库中读取与所述第二用户标识对应的第二序列化数据;
所述第一处理子模块,被配置为对所述第二序列化数据进行反序列化处理,得到第二索引;
所述修改子模块,被配置为基于所述修改请求对所述第二索引进行修改;
所述第二处理子模块,被配置为将修改后的第二索引进行序列化处理,得到修改后的第二序列化数据;
所述更新子模块,被配置为将所述非关系型数据库中存储的第二序列化数据更新为修改后的第二序列化数据。
可选的,所述修改子模块包括:第二存储子模块及修改子模块;
所述第二存储子模块,被配置为将所述第二索引存储到内存中;
所述修改子模块,被配置为在内存中对所述第二索引进行修改。
根据本公开实施例的第三方面,提供一种服务器,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为:
在非关系型数据库中读取与第一用户标识对应的第一序列化数据;
对所述第一序列化数据进行反序列化处理,得到第一索引;
基于所述第一索引进行搜索。
本公开的实施例提供的技术方案可以包括以下有益效果:
本公开中服务器可以在NoSQL数据库中读取与用户标识对应的序列化数据,并将序列化数据反序列化为索引,从而基于索引进行搜索。由于搜索的范围是针对与用户标识对应的数据,而非所有用户,因而搜索范围大大缩小,从而提高了搜索速度和搜索性能,优化了用户体验。
本公开中服务器可以为各用户数据分别建立索引,并分别序列化为二进制字符串,然后基于用户的不同,将二进制字符串与用户标识对应的存储在NoSQL数据库中,由于NoSQL数据库本身具有较好的时效性和一致性,因而保证了搜索的时效性和一致性;再者由于用户数据存储在NoSQL数据库的不同的行中,因而搜索仅针对与用户标识对应的数据进行,保护了用户数据的隐私,在物理上保证了安全性。其次由于NoSQL数据库会自动底层备份多份,因而进一步保证了搜索的安全性;而且由于NoSQL数据库自身存储的特点,与使用纯搜索的方案相比,随着用户的增加,所需增加的服务器数减少很多。
本公开中服务器可以将第一索引存储在内存中,在内存中基于第一索引进行搜索。在内存中进行搜索与在数据量庞大的磁盘中进行搜索相比,读取速度大大提高。
本公开中服务器还可以对索引进行修改,将与用户标识对应的二进制字符串反序列化为索引,对索引进行修改,并将修改后的索引序列化为二进制字符串,并更新NoSQL数据库中存储的二进制字符串。从而能够对需要增加、删除或修改用户数据的情况下,对NoSQL数据库中存储的数据及时进行更新,保证搜索的时效性。
本公开中对用户数据的修改也可以在内存中进行,以提高搜索的速度和性能。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
图1是本公开根据一示例性实施例示出的一种数据的搜索方法流程图。
图2是本公开根据一示例性实施例示出的另一种数据的搜索方法流程图。
图3是本公开根据一示例性实施例示出的一种数据的搜索应用场景示意图。
图4是本公开根据一示例性实施例示出的一种数据的搜索装置框图。
图5是本公开根据一示例性实施例示出的另一种数据的搜索装置框图。
图6是本公开根据一示例性实施例示出的另一种数据的搜索装置框图。
图7是本公开根据一示例性实施例示出的另一种数据的搜索装置框图。
图8是本公开根据一示例性实施例示出的另一种数据的搜索装置框图。
图9是本公开根据一示例性实施例示出的另一种数据的搜索装置框图。
图10是本公开根据一示例性实施例示出的一种用于数据的搜索装置的一结构示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
在本公开使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本公开。在本公开和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本公开可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本公开范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
如图1所示,图1是根据一示例性实施例示出的一种数据的搜索方法流程图,该方法可以用于服务器中,包括以下步骤:
步骤101、在非关系型数据库中读取与第一用户标识对应的第一序列化数据。
本公开中的服务器可以是例如小米服务器等云端的服务器。本公开中的终端可以是任何具有上网功能的智能终端,例如,可以具体为手机、平板电脑、个人数字助理(Personal Digital Assistant,PDA)等。其中,终端可以通过无线局域网接入路由器,并通过路由器访问公网上的服务器。
本公开中的非关系型数据库即非关系型的结构化查询语言(Non-relationalStructured Query Language,NoSQL)数据库。
步骤102、对该第一序列化数据进行反序列化处理,得到第一索引。
其中,序列化(Serialization)又称串行化,是.NET运行时环境用来支持用户定义类型的流化的机制。序列化就是把一个对象保存到一个文件或数据库字段中去,反序列化(Deserialization)就是在适当的时候把这个文件再转化成原来的对象使用。
步骤103、基于该第一索引进行搜索。
由上述实施例可知,服务器可以在NoSQL数据库中读取与用户标识对应的序列化数据,并将序列化数据反序列化为索引,从而基于索引进行搜索。由于搜索的范围是针对与用户标识对应的数据,而非所有用户,因而搜索范围大大缩小,从而提高了搜索速度和搜索性能,优化了用户体验。
如图2所示,图2是根据一示例性实施例示出的一种数据的搜索方法流程图,该方法可以用于服务器中,包括以下步骤:
本公开实施例中,服务器可以预先将各用户的个人数据处理为二进制字符串,并存储在NoSQL数据库中。
步骤201、获取第一用户数据和对应的第一用户标识。
本公开步骤中,可以是服务器接收到第一用户上传的第一用户数据,或者是在获得用户的授权之后,每隔设定的时间段主动获取终端的用户数据。该第一用户数据可以包括第一用户的短信、通信录、邮件、聊天记录及图片等个人数据。服务器接收到第一用户数据时还会接收到第一用户标识,例如小米服务器接收到的第一用户标识为第一用户的小米账户信息,此外用户标识还可以为用户的手机号码、终端的媒体访问控制(Media AccessControl,MAC)地址等。
步骤202、对第一用户数据建立第一索引。
本公开步骤中,服务器对该第一用户数据进行初始化,通过搜索引擎例如lucene,为该第一用户数据建立第一索引。也就是说,服务器为不同的用户数据分别建立索引。该索引中可以包括多个文件,例如倒排表、词汇表等。
步骤203、对建立的第一索引进行序列化处理,得到第一二进制字符串。
本公开步骤中,服务器根据索引底层格式,例如一个名称对应一项内容,将第一索引或者说将倒排表、词汇表等各个文件序列化成第一二进制字符串,例如xml字符串、json字符串、二进制流等。通常,该二进制字符串较小,甚至不超过2M,比如包含上万条短信或上万个图片的索引,这样占用的磁盘存储空间比较小。其中,序列化处理可以采用相关技术中的序列化方法,例如xml序列化(XmlSerialization)、二进制序列化(Binary Formatter)、Soap序列化(Soap Formatter)等。
步骤204、将该第一二进制字符串与第一用户标识关联存储到NoSQL数据库中。
本公开步骤中,服务器将各个用户的用户标识与二进制字符串对应的存储到NoSQL数据库中,例如Casssandra、Lucene/Solr、BigTable/Accumulo/Hypertable等数据库。
也就是说,本公开步骤中,服务器将不同用户的二进制字符串存储在NoSQL的不同行(Row),各用户的二进制字符串在物理上是分开的,从而有利于保护用户的个人隐私,安全性较高。然后,在服务器接收到用户的搜索请求时,基于上述NoSQL数据库中存储的索引进行搜索。
步骤205、在NoSQL数据库中读取与第一用户标识对应的第一二进制字符串。
本公开实施例中,服务器在接收到第一用户输入的携带有搜索条件的搜索请求时,从搜索请求中提取出该第一用户的第一用户标识,并基于第一用户标识在NoSQL数据库中查找和读取对应的第一序列化数据,该序列化数据可以为二进制字符串。
步骤206、对该第一二进制字符串进行反序列化处理,得到第一索引。
本公开步骤中,对服务器而言,只有经过反序列化的文件才是可读文件,才能够进行后续的搜索步骤,因而服务器通过对第一二进制字符串进行反序列化得到第一索引,即对应于该第一用户的个人数据的多个文件。
其中,由于NoSQL数据库位于服务器的磁盘上,服务器可以将第一二进制字符串从磁盘中读取到内存中进行存储,然后在内存中对该第一二进制字符串进行反序列化处理,得到第一索引。
步骤207、基于该第一索引进行搜索。
本公开步骤中,在内存中得到第一索引之后,可以基于搜索条件以及第一索引进行各种搜索操作。
由于内存的存储空间较大,而单个用户的索引占据空间较小,因而将该用户的索引存储到内存中,在内存中进行搜索。这种方式与在数据量庞大的磁盘中进行搜索相比,读取速度大大提高。而且,由于对内存仅仅是读操作,在搜索结束之后,即释放所占用的内存空间。
相关技术中,服务器针对所有用户的用户数据生成索引,并且将所有的索引都存储在服务器磁盘上,数据量非常庞大,甚至有几十G,打开磁盘以及读取磁盘的速度非常慢,因而搜索速度过慢,搜索性能较差,不能够满足用户需求。本公开实施例中,分别针对每个用户的用户数据生成索引,并将各索引对应的二进制字符串与用户标识对应的进行存储,这样当搜索某用户的数据时,只需基于用户标识针对对应的索引进行搜索即可,从而搜索的范围大大缩小,因而搜索速度大大提高。
本公开实施例中,在用户上传了新的用户数据,或修改、删除了用户数据时,服务器需要修改索引,这种情况下,本公开实施例还可以包括:
步骤208、响应于接收到的用户的修改请求,对第二用户标识对应的第二索引进行修改。
本公开步骤中,服务器获取修改请求中的第二用户标识,根据第二用户标识读取出对应的第二二进制字符串,然后将第二二进制字符串从磁盘中读取到内存中,进行反序列化处理,得到对应于该第二用户标识的第二索引,然后在内存中基于修改请求修改第二索引,最后将修改之后的第二索引序列化成二进制字符串,并存储到NoSQL数据库中,也就是说将NoSQL数据库中存储的第二二进制字符串更新为修改之后的第二索引对应的二进制字符串。
本公开的上述实施例中,由于每个用户的索引都是独立的,因而搜索范围更有针对性,搜索性能有保证。因此一台服务器能存储多少名用户的数据取决于NoSQL的存储大小。比如每个用户的索引是2M,服务器的磁盘空间为100G,那么一台服务器能服务大约100G/2M=5万名用户。如果采用相关技术中基于例如lucene的纯搜索的搜索方法,5万名用户的索引可以放在100G的磁盘空间中,但是由于搜索范围针对的是所有用户的数据,因而搜索性能比较差,搜索延迟很大,为了保证搜索性能,就需要减少服务器所存储的用户的数据的量,因而不可能存储5万用户的数据,实际上也许只能存储1万名用户的数据。而本公开由于搜索的范围不会针对全部用户,因而搜索性能加强,对同一台服务器而言本公开的方案显然能存储更多用户的数据,因而本公开中的方案所使用的总的服务器的数量也少于相关技术中所使用的服务器数量。
如图3所示,图3是本公开根据一示例性实施例示出的一种数据的搜索应用场景示意图。在图3所示的场景中,包括:服务器以及智能手机。
服务器接收到来自智能手机的用户的搜索请求,该搜索请求中携带搜索条件以及该用户的用户标识,服务器基于该用户标识,在NoSQL数据库中读取与该用户标识对应的二进制字符串,然后服务器对该读取的二进制字符串进行反序列化处理,得到对应于该用户标识的索引,服务器将该索引读取到内存中,然后基于该索引和搜索条件进行搜索。
在图3所示应用场景中,实现数据的搜索的具体过程可以参见前述对图1和图2中的描述,在此不再赘述。
与前述数据的搜索方法实施例相对应,本公开还提供了数据的搜索装置及其所应用的服务器的实施例。
如图4所示,图4是本公开根据一示例性实施例示出的一种数据的搜索装置框图,该装置可以包括:第一读取模块410、第一处理模块420及搜索模块430。
其中,第一读取模块410,被配置为在NoSQL数据库中读取与第一用户标识对应的第一序列化数据;
第一处理模块420,被配置为对第一读取模块410读取的第一序列化数据进行反序列化处理,得到第一索引;
搜索模块430,被配置为基于第一处理模块420处理得到的第一索引进行搜索。
上述实施例中,服务器可以在NoSQL数据库中读取与用户标识对应的序列化数据,并将序列化数据反序列化为索引,从而基于索引进行搜索。由于搜索的范围是针对与用户标识对应的数据,而非所有用户,因而搜索范围大大缩小,从而提高了搜索速度和搜索性能,优化了用户体验。
如图5所示,图5是本公开根据一示例性实施例示出的另一种数据的搜索装置框图,该实施例在前述图4所示实施例的基础上,该装置还可以包括:获取模块440、索引建立模块450、第二处理模块460及存储模块470。
其中,获取模块440,被配置为获取第一用户数据和对应的第一用户标识;
索引建立模块450,被配置为对获取模块440所获取的第一用户数据建立索引;
第二处理模块460,被配置为对索引建立模块450建立的索引进行序列化处理,得到二进制字符串;
存储模块470,被配置为将第二处理模块460处理得到的二进制字符串与第一用户标识关联存储到NoSQL数据库中,该第一序列化数据包括二进制字符串。
上述实施例中,服务器为各用户数据分别建立索引,并分别序列化为二进制字符串,然后基于用户的不同,将二进制字符串与用户标识对应的存储在NoSQL数据库中,由于NoSQL数据库本身具有较好的时效性和一致性,因而保证了搜索的时效性和一致性;再者由于用户数据存储在NoSQL数据库的不同的行中,因而搜索仅针对与用户标识对应的数据进行,保护了用户数据的隐私,在物理上保证了安全性。其次由于NoSQL数据库会自动底层备份多份,因而进一步保证了搜索的安全性;而且由于NoSQL数据库自身存储的特点,与使用纯搜索的方案相比,随着用户的增加,所需增加的服务器数减少很多。
如图6所示,图6是本公开根据一示例性实施例示出的另一种数据的搜索装置框图,该实施例在前述图4所示实施例的基础上,搜索模块430可以包括:第一存储子模块431及搜索子模块432。
其中,第一存储子模块431,被配置为将第一索引存储到内存中;
搜索子模块432,被配置为在内存中基于第一存储子模块431存储的第一索引进行搜索。
上述实施例中,可以将第一索引存储在内存中,在内存中基于第一索引进行搜索。在内存中进行搜索与在数据量庞大的磁盘中进行搜索相比,读取速度大大提高。
如图7所示,图7是本公开根据一示例性实施例示出的另一种数据的搜索装置框图,该实施例在前述图4所示实施例的基础上,该装置还可以包括:修改模块480。
其中,修改模块480,被配置为响应于接收到修改请求,对第二用户标识对应的第二索引进行修改,该修改请求包括第二用户标识。
如图8所示,图8是本公开根据一示例性实施例示出的另一种数据的搜索装置框图,该实施例在前述图7所示实施例的基础上,该修改模块480可以包括:读取子模块481、第一处理子模块482、修改子模块483、第二处理子模块484及更新子模块485。
其中,读取子模块481,被配置为在NoSQL数据库中读取与第二用户标识对应的第二序列化数据;
第一处理子模块482,被配置为对读取子模块481所读取的第二序列化数据进行反序列化处理,得到第二索引;
修改子模块483,被配置为基于修改请求对第一处理子模块482处理得到的第二索引进行修改;
第二处理子模块484,被配置为将修改子模块483修改后的第二索引进行序列化处理,得到修改后的第二序列化数据;
更新子模块485,被配置为将NoSQL数据库中存储的第二序列化数据更新为修改后的第二序列化数据。
上述实施例中,服务器还可以对索引进行修改,将与用户标识对应的二进制字符串反序列化为索引,对索引进行修改,并将修改后的索引序列化为二进制字符串,并更新NoSQL数据库中存储的二进制字符串。从而能够对需要增加、删除或修改用户数据的情况下,对NoSQL数据库中存储的数据及时进行更新,保证搜索的时效性。
如图9所示,图9是本公开根据一示例性实施例示出的另一种数据的搜索装置框图,该实施例在前述图8所示实施例的基础上,修改子模块483还可以包括:第二存储子模块486及修改子模块487。
其中,第二存储子模块486,被配置为将第二索引存储到内存中;
修改子模块487,被配置为在内存中对第二存储子模块386存储的第二索引进行修改。
上述实施例中,对用户数据的修改也可以在内存中进行,以提高搜索的速度和性能。
上述图4至图9示出的数据的搜索装置实施例可以应用在服务器中。
上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本公开方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
相应的,本公开还提供一种服务器,所述服务器包括有处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为:在非关系型数据库中读取与第一用户标识对应的第一序列化数据;对所述第一序列化数据进行反序列化处理,得到第一索引;基于所述第一索引进行搜索。
如图10所示,图10是根据一示例性实施例示出的一种用于数据的搜索装置1000的一结构示意图。例如,装置1000可以被提供为一服务器。参照图10,装置1000包括处理组件1022,其进一步包括一个或多个处理器,以及由存储器1032所代表的存储器资源,用于存储可由处理部件1022的执行的指令,例如应用程序。存储器1032中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件1022被配置为执行指令,以执行上述访问网页的方法。
装置1000还可以包括一个电源组件1026被配置为执行装置1000的电源管理,一个有线或无线网络接口1050被配置为将装置1000连接到网络,和一个输入输出(I/O)接口1058。装置1000可以操作基于存储在存储器1032的操作***,例如Windows ServerTM,MacOS XTM,UnixTM,LinuxTM,FreeBSDTM或类似。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本公开旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
以上所述仅为本公开的较佳实施例而已,并不用以限制本公开,凡在本公开的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本公开保护的范围之内。
Claims (9)
1.一种数据的搜索方法,其特征在于,包括:
在非关系型数据库中读取与第一用户标识对应的第一序列化数据;
对所述第一序列化数据进行反序列化处理,得到第一索引;
基于所述第一索引进行搜索;
所述方法还包括:
响应于接收到修改请求,对第二用户标识对应的第二索引进行修改,所述修改请求包括所述第二用户标识;
所述响应于接收到修改请求,对第二用户标识对应的第二索引进行修改,包括:
在非关系型数据库中读取与所述第二用户标识对应的第二序列化数据;
对所述第二序列化数据进行反序列化处理,得到第二索引;
基于所述修改请求对所述第二索引进行修改;
将修改后的第二索引进行序列化处理,得到修改后的第二序列化数据;
将所述非关系型数据库中存储的第二序列化数据更新为修改后的第二序列化数据。
2.根据权利要求1所述的方法,其特征在于,在所述在非关系型数据库中读取与第一用户标识对应的第一序列化数据之前,所述方法还包括:
获取第一用户数据和对应的第一用户标识;
对所述第一用户数据建立第一索引;
对所述第一索引进行序列化处理,得到第一二进制字符串;
将所述第一二进制字符串与所述第一用户标识关联存储到所述非关系型数据库中,所述第一序列化数据包括所述第一二进制字符串。
3.根据权利要求1所述的方法,其特征在于,所述基于所述第一索引进行搜索,包括:
将所述第一索引存储到内存中;
在内存中基于所述第一索引进行搜索。
4.根据权利要求1所述的方法,其特征在于,所述基于所述修改请求对所述第二索引进行修改,包括:
将所述第二索引存储到内存中;
在内存中对所述第二索引进行修改。
5.一种数据的搜索装置,其特征在于,包括:第一读取模块、第一处理模块及搜索模块;
所述第一读取模块,被配置为在非关系型数据库中读取与第一用户标识对应的第一序列化数据;
所述第一处理模块,被配置为对所述第一序列化数据进行反序列化处理,得到第一索引;
所述搜索模块,被配置为基于所述第一索引进行搜索;
所述装置还包括:修改模块;
所述修改模块,被配置为响应于接收到修改请求,对第二用户标识对应的第二索引进行修改,所述修改请求包括所述第二用户标识;
所述修改模块包括:读取子模块、第一处理子模块、修改子模块、第二处理子模块及更新子模块;
所述读取子模块,被配置为在非关系型数据库中读取与所述第二用户标识对应的第二序列化数据;
所述第一处理子模块,被配置为对所述第二序列化数据进行反序列化处理,得到第二索引;
所述修改子模块,被配置为基于所述修改请求对所述第二索引进行修改;
所述第二处理子模块,被配置为将修改后的第二索引进行序列化处理,得到修改后的第二序列化数据;
所述更新子模块,被配置为将所述非关系型数据库中存储的第二序列化数据更新为修改后的第二序列化数据。
6.根据权利要求5所述的装置,其特征在于,所述装置还包括:获取模块、索引建立模块、第二处理模块及存储模块;
所述获取模块,被配置为获取第一用户数据和对应的第一用户标识;
所述索引建立模块,被配置为对所述第一用户数据建立第一索引;
所述第二处理模块,被配置为对所述第一索引进行序列化处理,得到第一二进制字符串;
所述存储模块,被配置为将所述第一二进制字符串与所述第一用户标识关联存储到所述非关系型数据库中,所述第一序列化数据包括所述第一二进制字符串。
7.根据权利要求5所述的装置,其特征在于,所述搜索模块包括:第一存储子模块及搜索子模块;
第一存储子模块,被配置为将所述第一索引存储到内存中;
搜索子模块,被配置为在内存中基于所述第一索引进行搜索。
8.根据权利要求5所述的装置,其特征在于,所述修改子模块包括:第二存储子模块及修改子模块;
所述第二存储子模块,被配置为将所述第二索引存储到内存中;
所述修改子模块,被配置为在内存中对所述第二索引进行修改。
9.一种服务器,其特征在于,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为:
在非关系型数据库中读取与第一用户标识对应的第一序列化数据;
对所述第一序列化数据进行反序列化处理,得到第一索引;
基于所述第一索引进行搜索;
所述处理器还被配置为:
响应于接收到修改请求,对第二用户标识对应的第二索引进行修改,所述修改请求包括所述第二用户标识;
所述响应于接收到修改请求,对第二用户标识对应的第二索引进行修改,包括:
在非关系型数据库中读取与所述第二用户标识对应的第二序列化数据;
对所述第二序列化数据进行反序列化处理,得到第二索引;
基于所述修改请求对所述第二索引进行修改;
将修改后的第二索引进行序列化处理,得到修改后的第二序列化数据;
将所述非关系型数据库中存储的第二序列化数据更新为修改后的第二序列化数据。
Priority Applications (8)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510531673.4A CN105138649B (zh) | 2015-08-26 | 2015-08-26 | 数据的搜索方法、装置及终端 |
KR1020167005126A KR101790766B1 (ko) | 2015-08-26 | 2015-12-29 | 데이터의 검색 방법, 장치 및 단말기 |
JP2017535958A JP6383110B2 (ja) | 2015-08-26 | 2015-12-29 | データの検索方法、装置及び端末 |
PCT/CN2015/099297 WO2017031894A1 (zh) | 2015-08-26 | 2015-12-29 | 数据的搜索方法、装置及终端 |
MX2016002625A MX360747B (es) | 2015-08-26 | 2015-12-29 | Método, dispositivo y terminal para búsqueda de datos. |
RU2016107009A RU2637472C2 (ru) | 2015-08-26 | 2015-12-29 | Способ, устройство и терминал для поиска данных |
EP16159742.2A EP3136261A1 (en) | 2015-08-26 | 2016-03-10 | Method and device for data search |
US15/065,861 US20170060922A1 (en) | 2015-08-26 | 2016-03-10 | Method and device for data search |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510531673.4A CN105138649B (zh) | 2015-08-26 | 2015-08-26 | 数据的搜索方法、装置及终端 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105138649A CN105138649A (zh) | 2015-12-09 |
CN105138649B true CN105138649B (zh) | 2018-11-30 |
Family
ID=54723997
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510531673.4A Active CN105138649B (zh) | 2015-08-26 | 2015-08-26 | 数据的搜索方法、装置及终端 |
Country Status (8)
Country | Link |
---|---|
US (1) | US20170060922A1 (zh) |
EP (1) | EP3136261A1 (zh) |
JP (1) | JP6383110B2 (zh) |
KR (1) | KR101790766B1 (zh) |
CN (1) | CN105138649B (zh) |
MX (1) | MX360747B (zh) |
RU (1) | RU2637472C2 (zh) |
WO (1) | WO2017031894A1 (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105138649B (zh) * | 2015-08-26 | 2018-11-30 | 小米科技有限责任公司 | 数据的搜索方法、装置及终端 |
CN108536798B (zh) * | 2018-04-02 | 2020-12-01 | 携程旅游网络技术(上海)有限公司 | 订单级别的数据库数据的恢复方法及*** |
CN109408696B (zh) * | 2018-09-30 | 2021-05-18 | 上海掌门科技有限公司 | 一种用于搜索寄宿程序的方法与设备 |
CN109614372B (zh) * | 2018-10-26 | 2023-06-02 | 创新先进技术有限公司 | 一种对象存储、读取方法、装置、及业务服务器 |
CN111078632B (zh) * | 2019-12-27 | 2023-07-28 | 珠海金山数字网络科技有限公司 | 一种文件数据的管理方法及装置 |
CN114969124A (zh) * | 2022-06-15 | 2022-08-30 | 上海柯林布瑞信息技术有限公司 | 基于数据映射表的搜索索引构建方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070027866A1 (en) * | 2005-08-01 | 2007-02-01 | Markus Schmidt-Karaca | Application searching |
CN101141627A (zh) * | 2007-10-23 | 2008-03-12 | 深圳市迅雷网络技术有限公司 | 一种流媒体文件的存储***及方法 |
CN103425785A (zh) * | 2013-08-22 | 2013-12-04 | 新浪网技术(中国)有限公司 | 数据存储***及其用户数据存储、读取方法 |
CN104199892A (zh) * | 2014-08-26 | 2014-12-10 | 上海爱数软件有限公司 | 一种基于压缩合并异步更新的索引读写方法 |
CN104636464A (zh) * | 2015-02-09 | 2015-05-20 | 腾讯科技(深圳)有限公司 | 访问文件的方法和装置 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100377155C (zh) * | 2002-07-23 | 2008-03-26 | 三星电子株式会社 | 使用元数据索引的元数据搜索方法及设备 |
US8165998B2 (en) * | 2004-05-14 | 2012-04-24 | Sap Ag | Fast comparison using multi-level version format |
CN101183364B (zh) * | 2006-11-24 | 2010-10-13 | 腾讯科技(深圳)有限公司 | 一种信息搜索方法、搜索引擎客户端/服务器及*** |
JP2010072774A (ja) * | 2008-09-17 | 2010-04-02 | Nec Corp | データ検索システム、データ検索方法及びデータ検索プログラム |
US8239389B2 (en) * | 2008-09-29 | 2012-08-07 | International Business Machines Corporation | Persisting external index data in a database |
US8948465B2 (en) * | 2012-04-09 | 2015-02-03 | Accenture Global Services Limited | Biometric matching technology |
CN103532919B (zh) * | 2012-07-06 | 2018-06-12 | 腾讯科技(深圳)有限公司 | 用户账户保持登录态的方法及*** |
US9471711B2 (en) * | 2013-09-23 | 2016-10-18 | Teradata Us, Inc. | Schema-less access to stored data |
CN106716402B (zh) * | 2014-05-12 | 2020-08-11 | 销售力网络公司 | 以实体为中心的知识发现 |
CN104462357B (zh) * | 2014-12-08 | 2017-11-17 | 百度在线网络技术(北京)有限公司 | 实现个性化搜索的方法和装置 |
CN105138649B (zh) * | 2015-08-26 | 2018-11-30 | 小米科技有限责任公司 | 数据的搜索方法、装置及终端 |
-
2015
- 2015-08-26 CN CN201510531673.4A patent/CN105138649B/zh active Active
- 2015-12-29 MX MX2016002625A patent/MX360747B/es active IP Right Grant
- 2015-12-29 KR KR1020167005126A patent/KR101790766B1/ko active IP Right Grant
- 2015-12-29 WO PCT/CN2015/099297 patent/WO2017031894A1/zh active Application Filing
- 2015-12-29 RU RU2016107009A patent/RU2637472C2/ru active
- 2015-12-29 JP JP2017535958A patent/JP6383110B2/ja active Active
-
2016
- 2016-03-10 US US15/065,861 patent/US20170060922A1/en not_active Abandoned
- 2016-03-10 EP EP16159742.2A patent/EP3136261A1/en not_active Ceased
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070027866A1 (en) * | 2005-08-01 | 2007-02-01 | Markus Schmidt-Karaca | Application searching |
CN101141627A (zh) * | 2007-10-23 | 2008-03-12 | 深圳市迅雷网络技术有限公司 | 一种流媒体文件的存储***及方法 |
CN103425785A (zh) * | 2013-08-22 | 2013-12-04 | 新浪网技术(中国)有限公司 | 数据存储***及其用户数据存储、读取方法 |
CN104199892A (zh) * | 2014-08-26 | 2014-12-10 | 上海爱数软件有限公司 | 一种基于压缩合并异步更新的索引读写方法 |
CN104636464A (zh) * | 2015-02-09 | 2015-05-20 | 腾讯科技(深圳)有限公司 | 访问文件的方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
MX360747B (es) | 2018-11-15 |
EP3136261A1 (en) | 2017-03-01 |
KR101790766B1 (ko) | 2017-10-26 |
CN105138649A (zh) | 2015-12-09 |
MX2016002625A (es) | 2017-06-21 |
JP6383110B2 (ja) | 2018-08-29 |
KR20170035349A (ko) | 2017-03-30 |
RU2637472C2 (ru) | 2017-12-04 |
RU2016107009A (ru) | 2017-08-31 |
WO2017031894A1 (zh) | 2017-03-02 |
US20170060922A1 (en) | 2017-03-02 |
JP2017535009A (ja) | 2017-11-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105138649B (zh) | 数据的搜索方法、装置及终端 | |
US10885100B2 (en) | Thumbnail-based image sharing method and terminal | |
CA2935505C (en) | Method and apparatus for scheduling concurrent task | |
US10152773B2 (en) | Creating a blurred area for an image to reuse for minimizing blur operations | |
CN114356971A (zh) | 数据处理方法、装置以及*** | |
WO2014110929A1 (en) | Method, device, and system for uploading data | |
CN104978430A (zh) | 一种数据处理方法及装置 | |
CN106570153A (zh) | 一种海量url的数据提取方法及*** | |
CN108959294B (zh) | 一种访问搜索引擎的方法和装置 | |
CN103577604B (zh) | 一种用于Hadoop分布式环境的图像索引结构 | |
KR101743731B1 (ko) | 분산된 데이터를 통합하여 생성한 온톨로지를 기반으로 쿼리를 처리하는 방법 및 장치 | |
CN106570152A (zh) | 一种手机号码的海量提取方法及*** | |
WO2019237949A1 (zh) | 搜索方法及装置 | |
CN115422270A (zh) | 信息处理方法及装置 | |
US10185729B2 (en) | Index creation method and system | |
CN103745004B (zh) | 一种基于云计算的桌面搜索方法、云服务器及终端 | |
US20140201233A1 (en) | Method, device, and system for uploading data | |
CN111191103A (zh) | 从互联网中识别分析企业主体信息方法、装置及存储介质 | |
JP6310532B1 (ja) | 生成装置、生成方法、及び生成プログラム | |
WO2023035893A1 (zh) | 一种搜索处理方法、装置、设备、介质及程序产品 | |
JP6855401B2 (ja) | 生成装置、生成方法、及び生成プログラム | |
CN114153366A (zh) | 语种配置方法及装置 | |
CN118426709A (zh) | 语句执行方法及装置 | |
EP3063672B1 (en) | Text sample entry group formulation | |
CN116541482A (zh) | 文本对象索引方法、对象存储***及相关设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |