CN107229714B - 一种基于分布式数据库的全文搜索引擎 - Google Patents

一种基于分布式数据库的全文搜索引擎 Download PDF

Info

Publication number
CN107229714B
CN107229714B CN201710395591.0A CN201710395591A CN107229714B CN 107229714 B CN107229714 B CN 107229714B CN 201710395591 A CN201710395591 A CN 201710395591A CN 107229714 B CN107229714 B CN 107229714B
Authority
CN
China
Prior art keywords
document
word
words
distributed database
frequency
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
Application number
CN201710395591.0A
Other languages
English (en)
Other versions
CN107229714A (zh
Inventor
江和慧
黄显洛
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hangzhou Yu Cheng Technology Co Ltd
Original Assignee
Hangzhou Yu Cheng Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hangzhou Yu Cheng Technology Co Ltd filed Critical Hangzhou Yu Cheng Technology Co Ltd
Priority to CN201710395591.0A priority Critical patent/CN107229714B/zh
Publication of CN107229714A publication Critical patent/CN107229714A/zh
Application granted granted Critical
Publication of CN107229714B publication Critical patent/CN107229714B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/93Document management systems

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Business, Economics & Management (AREA)
  • General Business, Economics & Management (AREA)
  • Computing Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提出一种基于分布式数据库的全文搜索引擎,包括索引和搜索,其中:索引是将文档和文档经过分词后的单词存入分布式数据库;搜索是根据用户的输入,返回包含用户输入以及经过排序的结果。本发明使用三张表(即单词表、文档表和语料库表),采用不同的均衡字段,单词表用单词id分表,文档表用文档id分表,语料库表用单词id分表,从而在查询的时候,按照单词进行查询,单词表按照单词id作为均衡字段,只需要到指定的某些节点上执行即可,其搜索效率大大地提高。使用了分布式数据库作为存储介质,可以利用其强大的缓存和sql计算功能,另外分布式数据库自身带有分布式功能,使其具有很强的扩展能力。

Description

一种基于分布式数据库的全文搜索引擎
技术领域
本发明基于分布式数据库和全文搜索引擎领域技术领域,尤其涉及一种基于分布式数据库的全文搜索引擎。
背景技术
随着计算机和互联网的大力普及和发展,例如数千万用户每天产生亿级别的数据,迫切需要分布式的存储和全文搜索工具。目前的方案:文档和单词都是按照文档来进行分布式存储的,查询的时候是按照单词来查询的,所以需要到所有节点上查询。
发明内容
为了解决上述的技术问题,本发明的设计思路是将文档和单词分开,按照不同的策略存储,在查询的时候,只需要到单词所在的节点进行查询,即本发明的目的是提供一种能够提高搜索效率、又具有很强的扩展能力的基于分布式数据库的全文搜索引擎。
为了达到上述的目的,本发明采用了以下的技术方案:
本发明提出一种基于分布式数据库的全文搜索引擎,包括索引和搜索,其中:
索引包括下载文档、分析文档、以及将文档和文档经过分词后得到的单词存入分布式数据库;搜索是根据用户的输入,查询分布式数据库,返回包含用户输入的、按照得分进行排序的结果文档。其中:搜索引擎的绝大部分内容都没有变,变的只是存储使用了分布式数据库,所以导致索引部分和搜索部分发生了变化。
作为优选:文档id、文档内容、文档地址等存入分布式数据库中对应节点的文档表中,对文档进行分词和分析,得到单词id、单词、单词所在的文档id以及单词的频率存入到分布式数据库中对应节点的单词表中。
作为优选:文档id以及单词id是通过将文档地址的hash值以及文档分词后的每个单词的hash值转换为整数得到,然后对文档id、单词id分别对分布式数据库内的节点数取余数,得到文档对应的节点id以及单词对应的节点id。
其中:文档地址是文档的标识,并非网页内容本身,文档id是通过文档地址的hash值转换来的;单词的内容本身是单词的标识,单词的id通过单词内容本身的hash值转换来的。
作为优选:搜索的基本步骤如下:对用户的输入进行分词,得到单词和单词之间的逻辑关系,针对每个单词到对应节点的单词表中搜索;
根据单词表的文档id和单词逻辑关系计算结果文档id的集合,并且根据文档id提取文档内容;同时相同文档id内所有单词的频率逆文档频率之和构成文档的得分,文档按照得分从高到低排名;
其中:单词的频率逆文档频率为单词的频率和语料库中单词的逆文档频率相乘结果;
单词之间的逻辑关系是指与、或、非、及三种逻辑运算的任意组合。
作为优选:文档存储在分布式数据库相关节点的文档表中,单词存储在分布式数据库相关节点的单词表中,单词的逆文档频率存储在分布式数据库相关节点的语料库表中,其中:文档与单词的关系是:一份文档是由若干个单词组成,将一份文档进行分词即可得到若干个单词;其中:所谓分词是指将由若干个单词组成的一份文档分为这若干个单词。
作为优选:分布式数据库中节点的文档表基本属性包括文档id、文档地址、文档内容等,文档表的均衡字段采用文档id;分布式数据库中节点的单词表基本属性包括单词id、单词、单词所在的文档id、单词的频率,单词表的均衡字段采用单词id;
分布式数据库中节点的语料库表基本属性包括单词id、单词、单词的逆文档频率,语料库表的均衡字段采用单词id。
与现有技术相比,本发明的有益效果是:
本发明由于采用了以上的技术方案,从结构上来说,本发明使用三张表(即单词表、文档表和语料库表),采用不同的均衡字段,单词表用单词id分表,文档表用文档id分表,语料库表用单词id分表,从而在查询的时候,按照单词进行查询,单词表按照单词id作为均衡字段,只需要到指定的某些节点上执行即可,其搜索效率大大地提高。
使用了分布式数据库作为存储介质,可以利用其强大的缓存和sql计算功能,另外分布式数据库自身带有分布式功能,使其具有很强的扩展能力。
附图说明
图1是本发明的整体架构示意图;
图2是本发明中分布式数据库的架构示意图。
具体实施方式
下面结合附图对本发明的具体实施方式做一个详细的说明。
如图2所示,分布式数据库中节点的文档表、单词表以及语料库表的设计,具体如下:
●文档表
Figure BDA0001308478380000031
其中:
doc_download_status
为0:表示初始状态,还没有开始下载;
为1:表示正在下载,就是说某个线程查询时,这个值为1,则跳过下载;
为2:下载完成的时候,更新记录,表示下载完成;此时下载内容,下载时间也会更新。
doc_parse_status
为0:表示初始状态,还没有开始分析存储;
为1:表示正在分析存储,就是说某个线程查询时,这个值为1,则跳过分析存储;
为2:分析存储完成的时候,更新记录,表示分析存储完成;此时分析存储内容,分析存储时间也会更新。
下载时间和分析存储时间是指下载完成的时间和分析存储完成的时间。
●单词表
Figure BDA0001308478380000041
●语料库表
Figure BDA0001308478380000042
文档索引过程:包括下载和分析存储
1、多线程下载过程:
根据文档地址得到文档id,查询文档表,看是否有这个文档id的记录
——没有,插入初始记录(文档id,文档地址,空,空,0,空,0,空),(标识11)更新doc_download_status=1,开始下载,看下载是否成功
成功,更新doc_download_status=2,下载内容,下载时间也会更新
失败,更新doc_download_status=0,下载内容,下载时间不会更新——有,查询doc_download_status的值
0,从(标识11)开始
1,跳过这个文档的下载
2,看下载时间是否是定时更新下载的周期(如一个月)之前
是,从(标识11)开始
否,跳过这个文档的下载
2、多线程分析存储
查询文档表中的记录,查询doc_parse_status的值
0,(标识12)更新doc_parse_status=1,开始分析存储,看分析存储是否成功——成功,更新doc_parse_status=2,分析存储内容,分析存储时间也会更新,然后将分析存储的单词结果(单词id,单词,文档id,单词频率)插入到单词表中——失败,更新doc_parse_status=0,分析存储内容,分析存储时间不会更新
1,跳过这个文档的分析存储
2,看分析存储时间是否是定时更新分析存储的周期(如一个月)之前
是,从(标识12)开始
否,跳过这个文档的分析存储
文档搜索过程:
1、如图1所示,对用户在搜索客户端中输入的关键词进行分词,得到单词和单词之间的逻辑关系(即与、或、非、及三种逻辑运算的任意组合),针对每个单词到对应节点的单词表中搜索;
2、根据单词表的文档id和单词逻辑关系计算结果文档id的集合,并且根据文档id提取文档内容;按照文档id进行分组,所有单词的频率逆文档频率之和构成文档的得分,文档按照得分从高到低排名;其中:单词的频率逆文档频率为单词的频率和语料库中单词的逆文档频率相乘结果。
以下结合具体实施例子,具体展开本发明一种基于分布式数据库的全文搜索引擎。
说明
●节点数为100,编号从0到99
●爬取的文档数为1000万
●语料库是基于100亿个文档建立,建立1000亿个单词的信息
●文档的id通过使用文档地址的md5,取md5的4个长整数之和,作为文档的id
●单词的id通过计算单词的md5,取md5的4个长整数之和,作为单词的id
为了示例,选择3篇个文档和8个单词作为演示用
文档的id和主要单词的id
Figure BDA0001308478380000061
索引
文档表的数据如下:
Figure BDA0001308478380000062
Figure BDA0001308478380000071
经过分词,统计单词的出现次数,得到分词表的数据如下,(出现次数为0的记录实际不存在,仅为说明)
Figure BDA0001308478380000081
语料库,收集的文档数10亿
Figure BDA0001308478380000082
搜索
例如用户输入“机器学习开源“
●第一步对用户输入,得到两个单词和单词之间的关系
机器学习 并且 开源
●第二步对每个单词进行查询,得到如下的记录
Figure BDA0001308478380000083
Figure BDA0001308478380000091
●第三步,根据单词之间的关系合并文档,并且计算每个文档的得分(得分=每个单词的得分之和,每个单词的得分=出现次数*逆文档频率)
Figure BDA0001308478380000092
●第四步,根据文档id查询文档内容,按照得分从高到低返回给用户,并且搜索词高亮显示
需要强调的是:以上仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制,凡是依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与修饰,均仍属于本发明技术方案的范围内。

Claims (3)

1.一种基于分布式数据库的全文搜索引擎,其特征在于,包括索引和搜索,其中:索引包括下载文档、分析文档、以及将文档和文档经过分词后得到的单词存入分布式数据库;
搜索是根据用户的输入,查询分布式数据库,返回包含用户输入的、按照得分进行排序的结果文档;
文档id、文档地址、文档内容存入分布式数据库中对应节点的文档表中;
对文档进行分词和分析,得到单词id、单词、单词所在的文档id以及单词的频率存入到分布式数据库中对应节点的单词表中;
文档id以及单词id是通过将文档地址的hash值以及文档分词后的每个单词的hash值转换为整数得到,然后对文档id、单词id分别对分布式数据库内的节点数取余数,得到文档对应的节点id以及单词对应的节点id;
搜索的基本步骤如下:对用户的输入进行分词,得到单词和单词之间的逻辑关系,针对每个单词到对应节点的单词表中搜索;
根据单词表的文档id和单词逻辑关系计算结果文档id的集合,并且根据文档id提取文档内容;同时相同文档id内所有单词的频率逆文档频率之和构成文档的得分,文档按照得分从高到低排名;
其中:单词的频率逆文档频率为单词的频率和语料库中单词的逆文档频率相乘结果;
单词之间的逻辑关系是指与、或、非、及三种逻辑运算的任意组合。
2.根据权利要求1中所述的一种基于分布式数据库的全文搜索引擎,其特征在于,文档存储在分布式数据库相关节点的文档表中,单词存储在分布式数据库相关节点的单词表中,单词的逆文档频率存储在分布式数据库相关节点的语料库表中,其中:文档与单词的关系是:一份文档是由若干个单词组成,将一份文档进行分词即可得到若干个单词;其中:所谓分词是指将由若干个单词组成的一份文档分为这若干个单词。
3.根据权利要求1中所述的一种基于分布式数据库的全文搜索引擎,其特征在于,分布式数据库中节点的文档表基本属性包括文档id、文档地址、文档内容等,文档表的均衡字段采用文档id;
分布式数据库中节点的单词表基本属性包括单词id、单词、单词所在的文档id、单词的频率,单词表的均衡字段采用单词id;
分布式数据库中节点的语料库表基本属性包括单词id、单词、单词的逆文档频率,语料库表的均衡字段采用单词id。
CN201710395591.0A 2017-05-31 2017-05-31 一种基于分布式数据库的全文搜索引擎 Active CN107229714B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710395591.0A CN107229714B (zh) 2017-05-31 2017-05-31 一种基于分布式数据库的全文搜索引擎

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710395591.0A CN107229714B (zh) 2017-05-31 2017-05-31 一种基于分布式数据库的全文搜索引擎

Publications (2)

Publication Number Publication Date
CN107229714A CN107229714A (zh) 2017-10-03
CN107229714B true CN107229714B (zh) 2020-02-14

Family

ID=59934581

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710395591.0A Active CN107229714B (zh) 2017-05-31 2017-05-31 一种基于分布式数据库的全文搜索引擎

Country Status (1)

Country Link
CN (1) CN107229714B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109284441B (zh) * 2018-09-18 2020-12-04 中国人民解放军战略支援部队信息工程大学 动态自适应网络敏感信息检测方法及装置
CN110569268A (zh) * 2019-09-17 2019-12-13 深圳前海环融联易信息科技服务有限公司 数据查询方法、系统及计算机可读存储介质
CN113779349A (zh) * 2021-08-11 2021-12-10 中央广播电视总台 数据检索系统、装置、电子设备和可读存储介质
CN113987146B (zh) * 2021-10-22 2023-01-31 国网江苏省电力有限公司镇江供电分公司 一种电力内网专用的智能问答系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103218443A (zh) * 2013-04-22 2013-07-24 中山大学 一种面向博客网页的网页检索系统及方法
CN103577418A (zh) * 2012-07-24 2014-02-12 北京拓尔思信息技术股份有限公司 海量文档分布式检索排重系统和方法
CN103714096A (zh) * 2012-10-09 2014-04-09 阿里巴巴集团控股有限公司 基于Lucene的倒排索引系统构建、数据处理方法及装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103577418A (zh) * 2012-07-24 2014-02-12 北京拓尔思信息技术股份有限公司 海量文档分布式检索排重系统和方法
CN103714096A (zh) * 2012-10-09 2014-04-09 阿里巴巴集团控股有限公司 基于Lucene的倒排索引系统构建、数据处理方法及装置
CN103218443A (zh) * 2013-04-22 2013-07-24 中山大学 一种面向博客网页的网页检索系统及方法

Also Published As

Publication number Publication date
CN107229714A (zh) 2017-10-03

Similar Documents

Publication Publication Date Title
US20200192948A1 (en) Efficient forward ranking in a search engine
US8713024B2 (en) Efficient forward ranking in a search engine
US9152697B2 (en) Real-time search of vertically partitioned, inverted indexes
CN107229714B (zh) 一种基于分布式数据库的全文搜索引擎
US9619571B2 (en) Method for searching related entities through entity co-occurrence
US20110022600A1 (en) Method of data retrieval, and search engine using such a method
CN111026710A (zh) 一种数据集的检索方法及系统
CN111522905A (zh) 一种基于数据库的文档搜索方法和装置
US8825665B2 (en) Database index and database for indexing text documents
CN107943919B (zh) 一种面向会话式实体搜索的查询扩展方法
CN105843960B (zh) 基于语义树的索引方法和系统
JP2012533819A (ja) 文書インデックス化およびデータクエリングのための方法およびシステム
US8527518B2 (en) Inverted indexes with multiple language support
JP2017220204A (ja) 検索クエリに応答してホワイトリストとブラックリストを使用し画像とコンテンツをマッチングする方法及びシステム
CN115563313A (zh) 基于知识图谱的文献书籍语义检索系统
CN105404677A (zh) 一种基于树形结构的检索方法
Kumar et al. Ontology based semantic indexing approach for information retrieval system
Ilic et al. Inverted index search in data mining
Kuc Apache solr 3.1 cookbook
Wu et al. Searching online book documents and analyzing book citations
CN105426490A (zh) 一种基于树形结构的索引方法
CN107992565B (zh) 一种优化搜索引擎的方法及系统
Shang et al. LiteIndex: Memory-Efficient Schema-Agnostic Indexing for JSON documents in SQLite
Molková Indexing very large text data
CN110019993B (zh) 一种基于海量标准文献数据的排序优化算法技术实现方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
PE01 Entry into force of the registration of the contract for pledge of patent right

Denomination of invention: A full-text search engine based on Distributed Database

Effective date of registration: 20210902

Granted publication date: 20200214

Pledgee: Binxing sub branch of Hangzhou United Rural Commercial Bank Co.,Ltd.

Pledgor: HANGZHOU YUWEI TECHNOLOGY Co.,Ltd.

Registration number: Y2021330001342

PE01 Entry into force of the registration of the contract for pledge of patent right