CN107305586B - 索引生成方法、索引生成装置及搜索方法 - Google Patents
索引生成方法、索引生成装置及搜索方法 Download PDFInfo
- Publication number
- CN107305586B CN107305586B CN201710249150.XA CN201710249150A CN107305586B CN 107305586 B CN107305586 B CN 107305586B CN 201710249150 A CN201710249150 A CN 201710249150A CN 107305586 B CN107305586 B CN 107305586B
- Authority
- CN
- China
- Prior art keywords
- word
- index
- bitmap
- hash
- file
- 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
Images
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/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
- G06F16/137—Hash-based
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/31—Indexing; Data structures therefor; Storage structures
- G06F16/316—Indexing structures
- G06F16/319—Inverted lists
-
- 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
- G06F16/148—File search 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/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/31—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/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/31—Indexing; Data structures therefor; Storage structures
- G06F16/316—Indexing 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/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/33—Querying
- G06F16/3331—Query processing
- G06F16/334—Query execution
- G06F16/3344—Query execution using natural language analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
- G06F40/279—Recognition of textual entities
- G06F40/284—Lexical analysis, e.g. tokenisation or collocates
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Software Systems (AREA)
- General Health & Medical Sciences (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Health & Medical Sciences (AREA)
- Library & Information Science (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本发明公开了索引生成方法、索引生成装置及搜索方法。在对多个输入文件进行词汇分析的过程中,索引生成装置生成关于存在或不存在多个关键字以及存在关键字时所述关键字针对相应文件的存在位置的各条信息。该索引生成装置基于所生成的各条信息,生成关于关键字以及关键字针对相应文件的位置的索引信息。
Description
技术领域
本文中讨论的实施方式涉及索引生成程序等。
背景技术
为了提高文本数据的检索速度,已知通过针对每个文件对存在或不存在文本数据中包含的每个字符建立索引而形成的位图索引(例如,参见国际公布小册子第WO 2013/038527号)。
此外,存在这样的技术:使用记录中包含的数据项的内容作为关键字,针对关键字生成用于指示记录的存储位置的索引,并且利用该索引来搜索数据库(例如,参见日本公开特许公报第63-189934号)。
已知一种用于生成与单词对应的指针表索引的技术(例如,参见2008年4月25日Gijutsu-Hyohron有限公司的Keisuke NISHIDA的Google wosasaeru gijutsu(支持Google的技术))。将参照图1来说明该技术。图1是示出了指针表索引生成处理的参考示例的图。如图1所示,利用该技术,从各个文档文件中提取单词,并且生成和采集与文档ID、单词ID及其出现位置对应的索引,并且按照单词ID对所采集的索引进行排序。以这种方式来生成转置索引,转置索引是其中文档ID和出现位置与作为参考的单词ID对应的指针表索引。
另一种常规技术例如在日本公开特许公报第No.63-271525号中被公开。此外,例如,在2006年6月25日Gijutsu-Hyohron有限公司的HiroshiSEKIGUCHI的ApacheLucenenyumon(ApacheLucene介绍)中参见另一种技术。
然而,存在的问题在于,包含文件、关键字及其出现位置的索引不能容易地以压缩格式一遍生成。从另一个观点来看,存在难以针对关键字来搜索文件及其出现位置的组合的问题。
例如,常规位图索引是当字符被用作关键字时包含关键字和文件的索引,但不是包含文件、关键字及其出现位置的索引。索引的生成和压缩彼此独立,并且以两遍来执行。因此,该技术不能容易地以压缩格式一遍生成包含文件、关键字及其出现位置的索引。
由于位图索引不包含关于出现位置的信息,因此为了针对关键字来搜索文件及其出现位置的组合,用索引来指定目标文件,然后通过参考相应的文件来检查关键字在文件中的出现位置。因此,难以针对关键字来搜索文件及其出现位置的组合。
另一方面,因为文档文件包含不同的单词,因此每次更新或添加文档文件时,使用用于生成指针表索引的技术在巨大的云环境中以三遍来重复索引生成处理、采集处理、排序处理和换位处理。此外,索引被一遍压缩。因此,尽管指针表索引包含文件、关键字及其出现位置,但是该技术不能容易地针对文档文件以压缩格式一遍生成指针表索引。
尽管当数据项的内容被用作关键字时会出现上述问题,但是不仅在数据项的内容被用作关键字的情况下,而且在单词或字符以相同的方式被用作关键字的情况下,也会出现上述问题。
因此,本发明的实施方式的一个方面的目的是容易地以压缩格式一遍生成包含文件、关键字及其出现位置的索引。本发明的实施方式的另一方面的目的是容易地针对关键字搜索文件及其出现位置的组合。
发明内容
根据实施方式的一个方面,一种索引生成方法由计算机执行。该方法包括:在对多个输入文件进行词汇分析时针对多个输入文件生成关键字存在信息,关键字存在信息包括关于在多个输入文件中是否存在多个关键字中的每一个以及当在多个输入文件中存在相应多个关键字时相应多个关键字的存在位置的信息。该处理包括:基于关键字存在信息生成关于关键字和关键字针对多个输入文件的位置的索引信息。
附图说明
图1是示出了指针表索引生成处理的参考示例的图;
图2是示出了根据实施方式的位图索引生成处理的流程的示例的图;
图3是示出了实施方式中的位图索引的示例的图;
图4是示出了实施方式中的动态词典的示例的图;
图5是示出了实施方式中的散列索引生成处理的示例的图;
图6是示出了经编码的文件的配置的示例的图;
图7是示出了实施方式中的检索处理的示例的图;
图8是示出了实施方式中的散列位图恢复处理的示例的图;
图9是示出了实施方式中的索引生成装置的配置的功能框图;
图10是示出了实施方式中的索引生成处理的流程图的示例的图;
图11是示出了实施方式中的编码处理的流程图的示例的图;
图12是示出了实施方式中的检索装置的配置的功能框图;
图13是示出了实施方式中的检索处理的流程图的示例的图;
图14是示出了计算机的硬件配置的示例的图;
图15是示出了在计算机中运行的程序的配置的示例的图;以及
图16是示出了实施方式的系统中的装置的配置的示例的图。
具体实施方式
将参照附图来说明本发明的优选实施方式。注意,这些实施方式不对本发明进行限制。
实施方式中的位图索引生成的示例
图2是示出了实施方式中的位图索引生成处理的流程的示例的图。如图2所示,在对多个输入文件进行词汇分析的过程中,位图索引生成处理生成关于存在或不存在多个单词以及存在单词时单词针对相应文件的位置的各条信息。位图索引生成处理基于各条所生成的信息来生成单词和单词针对相应文件的位置的位图索引。在下文中,将位图索引生成处理称为“索引生成处理”。
下面将描述索引生成处理的示例。例如,执行索引生成处理的索引生成装置将包含在文件F1中的一个文件3作为编码对象加载到存储区域中。注意,文件3的“3”指示文件ID为“3”。
索引生成装置从存储区域读取出文件3,并且对所读取的文件3执行词汇分析。本文中所指的词汇分析是指对未被编码成单词的文件进行分割。
索引生成装置将静态词典S0与单词的字符串进行比较,并且确定在静态词典S0中是否存在与单词的字符串对应的代码。可以替代地以下面的方式来执行确定处理。即,索引生成装置将指定可以使用静态词典S0编码的单词的字符串的位过滤器与单词的字符串进行比较,并且确定单词的字符串是否命中该位过滤器。本文中所指的位过滤器指示指定可以使用静态词典S0编码的单词的字符串的过滤器。当在静态词典S0中存在与单词的字符串对应的代码时,索引生成装置基于静态词典S0将单词的字符串编码成与单词的字符串对应的代码(静态码)。
当在静态词典S0中不存在与单词的字符串对应的代码时,索引生成装置确定单词的字符串是否已被登记在动态词典D0中。当单词的字符串尚未被登记在动态词典D0中时,索引生成装置将单词的字符串登记在动态词典D0中,并且基于动态词典D0将所登记的单词的字符串编码成与所登记的单词的字符串对应的动态码。当单词的字符串已被登记在动态词典D0中时,索引生成装置基于动态词典D0将单词的字符串编码成与单词的字符串对应的动态码。
静态词典S0指示通过下述方法提供的词典:基于通用的英语词典、日语词典、教科书等指定单词在文档中出现的出现频率,并且对具有较高出现频率的单词分配较短的代码。在静态词典S0中,预先登记了作为与各个单词对应的代码的静态码。另一方面,动态词典D0指示其中未被登记在静态词典中的单词与动态分配的动态码(代码)彼此对应的词典。未被登记在静态词典S0中的单词的示例包括具有低出现频率的单词(低频单词)、未知单词、数值、时间和标签。本文中所指的未知单词未被登记在静态词典S0中,并且具有在待编码的文档中反复出现的特性。在动态词典D0中,与动态码对应的单词按照未被登记在静态词典S0中的单词的出现顺序登记在缓冲区部分中。注意,后面将详细描述动态词典D0。
索引生成装置将文件3的编码数据区域中的通过进行编码而分配的单词代码存储在经编码的文件F2中。
索引生成装置生成关于通过编码而分配的单词代码以及由单词代码指示的单词针对文件3的位置的各条信息。索引生成装置基于所生成的各条信息将针对文件3存在或不存在由单词代码指示的单词设定到二维位图索引BI1。索引生成装置基于所生成的各条信息将单词代码以及由单词代码指示的单词针对文件3的位置设定到三维位图索引BI2。
本文中所指的二维位图索引BI1是用于全文检索的索引,并且是通过将指定单词的指针和指示在各个目标文件中存在或不存在所述单词的位进行连接而形成的位串。即,二维位图索引BI1指示通过针对各个文件对存在或不存在包含在该文件中的单词建立索引而形成的位图。在检索处理中,位图可以被用作基于位的ON和OFF来指示是否包含了作为检索目标的单词的索引。作为指定单词的指针,例如采用单词的代码。单词的代码指示静态码和单词代码,并且具有与单词ID相同的含义。应当注意,指定单词的指针可以是例如单词本身。即,二维位图索引BI1是通过采集由指定单词的指针指示的各个单词的位图来形成。如图2所示,二维位图索引BI1的X轴指示文件ID,二维位图索引BI1的Y轴指示单词ID。换言之,二维位图索引BI1表示:针对由文件ID指示的各个文件,存在或不存在由单词ID指示的单词。
本文中所指的三维位图索引BI2是通过将单词在各个目标文件中的的位置添加到二维位图索引BI1而形成的位图索引。即,三维位图索引BI2是通过针对各个文件对包含在文件中的单词的存在位置建立索引而形成的位图。如图2所示,三维位图索引BI2的X轴指示值(位置),三维位图索引BI2的Y轴指示单词ID,并且三维位图索引BI2的Z轴指示文件ID。换言之,三维位图索引BI2表示:针对由文件ID指示的各个文件,由单词ID所指示的单词的位置。
将描述当索引生成装置生成文件3的位图索引时的处理。“...Sherlock...LONDON...Baker...”被存储在文件3的文本文件中。假设单词的字符串“Sherlock”、单词的字符串“LONDON”和单词的字符串“Baker”尚未被登记在静态词典S0中。
索引生成装置对文件3执行词汇分析以获取“Sherlock”、“LONDON”和“Baker”。将描述对所获取的单词的字符串中的“Baker”生成索引的处理作为示例。假设单词的字符串“Sherlock”和单词的字符串“LONDON”已被登记在动态词典D0中。
因为在静态词典S0中不存在与单词的字符串“Baker”对应的代码,所以索引生成装置确定单词的字符串“Baker”是否已被登记在动态词典D0中。因为单词的字符串“Baker”尚未被登记在动态词典D0中,因此索引生成装置将单词的字符串“Baker”登记在动态词典D0中。然后,索引生成装置基于动态词典D0将所登记的单词的字符串“Baker”编码成与单词的字符串对应的动态码“A002h”。
索引生成装置将文件3的编码数据区域中的通过进行编码而分配的单词代码“A002h”存储在经编码的文件F2中。
随后,索引生成装置生成关于通过编码而分配的单词代码“A002h”以及由单词代码指示的单词“Baker”针对文件3的位置的各条信息。在本示例中,假定单词“Baker”针对文件3的位置为“23”。
然后,索引生成装置基于所生成的各条信息,将针对文件3存在或不存在由单词代码“A002h”指示的单词设定到二维位图索引BI1。二维位图索引BI1描绘了与“Baker”的单词ID“A002h”对应的位图。作为针对由文件ID“3”指示的文件存在或不存在单词的ON即二进制数“1”被设定到位图。当文件中没有单词时,作为针对文件存在或不存在单词的OFF被设定到与该单词指示的单词ID对应的位图。
索引生成装置基于所生成的各条信息,将单词代码“A002h”以及由单词代码指示的单词针对文件3的位置“23”设定到三维位图索引BI2。三维位图索引BI2描绘了与“Baker”的单词ID“A002h”和文件ID“3”对应的位图。ON即二进制数“1”被设定到与位图中的值(位置)“23”对应的位。当在文件中的预定位置处没有单词时,OFF被设定到位图中的与由单词指示的单词ID和由文件指示的文件ID所对应的预定位置对应的位。
因此,索引生成装置对经历了对文件3的词汇分析的单词依次进行编码,并且基于关于通过编码提供的单词代码和单词的位置的各条信息来生成二维位图索引BI1和三维位图索引BI2。
位图索引的示例
接着,将参照图3来描述二维位图索引的示例。图3是示出了实施方式中的位图索引的示例的图。如图3所示,二维位图索引BI1使位图对应于具有超高频率的单词、具有高频率的单词以及具有低频率的单词的相应压缩码(对应于单词ID)。位图是表示包含具有超高频率的单词、具有高频率的单词以及具有低频率的单词的压缩文件的代码位串。位图的各个位表示在各个文件中存在或不存在具有超高频率的单词、具有高频率的单词和具有低频率的单词。
二维位图索引BI1使位图对应于例如具有超高频率的32个类型的单词、具有高频率的8K(8,000)个类型的单词以及具有低频率的大约16K(16,000)个类型的单词。当在用于出现频率计数的文件组中对各个单词的出现频率进行计数时,具有超高频率的单词指示具有高出现频率的单词。具有超高频率的单词是例如在用于出现频率计数的文件组中出现频率的排名高达前32名的单词。具有高频率的单词是在用于出现频率计数的文件组中出现频率的排名高达前8,000名的单词。具有低频率的单词是在用于出现频率计数的文件组中出现频率的排名低于24,000名的单词,并且是从待编码的文件中提取的数字字符串或单词。具有低频率的单词的示例包括技术单词、新词和未知单词。本文中所指的技术单词通常用于某些特定的学术领域、商业等,并且具有在待编码的文件中反复出现的特性。新词是新创建的词如流行语,并且具有在待编码的文件中反复出现的特性。未知单词既不是技术单词也不是新词,并且具有在待编码的文件中反复出现的特性。
例如,二维位图索引BI1中的有效第一行描述了由压缩码指示的单词“the”的位图是“...1101”。该位图表示包含“the”的压缩码的文件。因为“1”被存储在第一位中,所以位图“...1101”表示文件1包含“the”;因为“0”被存储在第二位中,所以文件2不包含“the”;因为“1”被存储在第3位中,所以文件3包含“the”。此外,因为“1”被存储在第4位中,所以位图“...1101”表示文件4包含“the”。位图“...1101”还表示文件5和后续的其他文件是否包含“the”。
虽然在图中未示出,但是三维位图索引BI2使位图对应于相应的单词ID和文件ID。位图是当压缩文件包含该单词时表示该单词在压缩文件中的位置的代码位串。位图的各个位表示在压缩文件中的相应位置处存在或不存在该单词。
动态词典的示例
图4是示出了实施方式中的动态词典的示例的图。图4所示的动态词典D0包含缓冲区部分D1和地址表D2。在缓冲区部分D1中存储有字符串。地址表D2以对应的方式保存动态码、存储位置和数据长度。动态码是具有预先限定的固定长度的代码,并且是例如压缩码。动态码按照单词的字符串的登记顺序来分配。动态码是从十六进制的“A”开始并且具有2个字节的固定长度的代码。存储位置指示字符串存储在缓冲区部分D1中的位置。数据长度指示存储在缓冲区部分D1中的字符串的长度(以字节为单位的长度)。
将描述例如对字符串“Baker”分配动态码的情况。索引生成装置将字符串“Baker”存储在缓冲区部分D1中。索引生成装置将存储字符串的存储位置和所存储的数据的长度登记在地址表D2中。在本示例中,索引生成装置将作为存储位置的“16”和作为数据长度的“6”登记在地址表D2中。
索引生成装置将地址表D2中的与字符串对应的动态码分配作为压缩码。在本示例中,索引生成装置将对应的动态码“A002h”分配给字符串“Baker”。
实施方式中的散列索引生成处理的示例
接着,将参照图5来描述对二维位图索引进行散列的处理的示例。图5是示出了实施方式中的散列索引生成处理的示例的图。
如图5所示,索引生成装置生成通过对与单词ID对应的相应位图应用散列函数而提供的多个散列位图。当假设32位寄存器时,索引生成装置基于作为示例的散列值(基数)29和31来对各个位图进行散列。具体地,对于基于一个基数的散列位图,索引生成装置将与单词ID对应的位图的各个位的值设定到与通过将位图的各个位的位置除以基数而计算出的余数相匹配的位置。位图的各个位的位置对应于相应的文件ID。作为示例,对于基于基数29的散列位图h11,索引生成装置将位图b1的各个位的值设定到与通过将位图b1的各个位的位置除以基数29而计算出的余数相匹配的位置。位图b1的第35位的位置处的位值“1”被设定到散列位图h11的第6位。位图b1的第42位的位置处的位值“1”被设定到散列位图h11的第13位。对于基于基数31的散列位图h12,索引生成装置将位图b1的各个位的值设定到与通过将位图b1的各个位的位置除以基数31而计算出的余数相匹配的位置。位图b1的第35位的位置处的位值“1”被设定到散列位图h12的第4位。位图b1的第42位的位置处的位值“1”被设定到散列位图h12的第11位。即,索引生成装置按照从散列位图的第0位到第(基数-1)位的顺序从位图的第0位开始设定各个位。然后,索引生成装置再次返回到散列位图的第0位,并且将通过与已经设定的值进行“或”运算而计算出的值设定到散列位图。结果,索引生成装置生成位图b1的散列位图h11和h12。以这种方式,索引生成装置生成与指示单词的相应单词ID对应的位图的散列位图。因此,索引生成装置生成通过采集所生成的散列位图而提供的二维散列索引HI1。
索引生成装置还通过以与用于二维位图索引BI1的位图相同的方式对三维位图索引BI2的位图应用散列函数来生成多个散列位图。然后,索引生成装置生成通过采集单独生成的散列位图而提供的三维散列索引HI2就足够了。在下文中,作为示例,假设散列值(基数)为29和31。
经编码的文件的配置的示例
图6是示出了经编码的文件的配置的示例的图。如图6所示,经编码的文件F2具有头部分、经编码的数据和尾部分。在经编码的数据中存储有通过对各个文件进行编码而提供的各组单词代码。在尾部分中存储有各个文件的地址、关于动态词典(公共/个体)的信息、散列索引(二维/三维)等。各个文件的地址指示通过对文件进行编码而提供的各条经编码的数据的存储目的地的地址。作为示例,各个文件的地址是相对于经编码的数据的头的地址。关于个体动态词典D0的信息对应于针对每个文件的关于图4所示的动态词典的信息。关于公共动态词典D0的信息对应于针对所有的文件的关于图4所示的动态词典D0的信息。二维散列索引指示二维散列索引HI1。三维散列索引指示三维散列索引HI2。在头部分中存储有指向各个文件的地址的指针、指向词典D0的指针以及指向存储在尾部分中的散列索引(二维/三维)的指针。当索引生成装置对各个文件进行编码时,索引生成装置将指示通过编码而提供的各个结果的各条经编码的数据存储在经编码的文件F2中,并且将经编码的数据的存储地址作为各个文件的地址进行存储。在对经编码的数据进行解码时,使用头部分中的指向各个文件的地址的指针,根据尾部分中的各个文件的地址来参考作为解码目标的文件的地址(经编码的数据)。通过使用头部分中的指向动态词典D0的指针来参考动态词典D0以执行解码处理。
实施方式中的检索处理的示例
图7是示出了实施方式中的检索处理的示例的图。如图7所示,执行检索处理的检索装置通过参考二维散列索引HI1,基于形成输入的检索关键字的单词来获取包含该单词的文件ID。然后,检索装置将由单词指示的单词ID和文件ID指定给三维散列索引HI2,以识别该单词的位置信息。
下面描述检索处理的示例。例如,当执行检索处理的检索装置接收到形成检索关键字的单词的输入时,检索装置通过参考二维散列索引HI1来提取与由接收到的单词指示的单词ID对应的散列位图。假设接收了“Sherlock”和“Baker”作为单词。然后,检索装置从二维散列索引HI1中提取指示与作为检索单词而接收的“Sherlock”的单词ID“A000h”对应的散列位图h4。散列位图h4包括基于基数29的散列位图h41和基于基数31的散列位图h42。检索装置从散列索引HI1中提取与指示作为检索单词而接收的“Baker”的单词ID“A0002h”对应的散列位图h5。散列位图h5包括基于基数29的散列位图h51和基于基数31的散列位图h52。
检索装置恢复所提取的与每个单词ID对应的散列位图。注意,稍后将描述恢复散列位图的处理。恢复结果被提供作为与单词ID对应的位图。检索装置恢复与单词ID“A000h”对应的散列位图h4,并且输出位图b4作为恢复结果。检索装置恢复与单词ID“A002h”对应的散列位图h5,并且输出位图b5作为恢复结果。
检索装置对与单词ID“A000h”对应的位图b4和与单词ID“A002h”对应的位图b5执行“与”运算。检索装置输出其“与”结果的位指示ON(“1”)的文件ID。即,检索装置缩窄至包含由单词ID“A000h”指示的“Sherlock”和由单词ID“A002h”指示的“Baker”的文件的文件ID。在本示例中,“3”被输出作为文件ID。
检索装置缩窄至文件ID,然后通过参考三维散列索引HI2来提取与单词ID和文件ID对应的散列位图。在本示例中,检索装置从三维散列索引HI2中提取与单词ID“A000h”和文件ID“3”对应的散列位图h6。散列位图h6包括基于基数29的散列位图h61和基于基数31的散列位图h62。此外,检索装置从三维散列索引HI2中提取与单词ID“A002h”和文件ID“3”对应的散列位图h7。散列位图h7包括基于基数29的散列位图h71和基于基数31的散列位图h72。
检索装置恢复每个所提取的散列位图。恢复结果被提供作为与单词ID和文件ID对应的位图。在本示例中,检索装置恢复与单词ID“A000h”和文件ID“3”对应的散列位图h6,并且输出位图b6作为恢复结果。检索装置恢复与单词ID“A002h”和文件ID“3”对应的散列位图h7,并且输出位图b7作为恢复结果。
检索装置指定作为恢复结果而输出的位图的位指示ON(“1”)的值(位置)。在本示例中,检索装置指定位图b6的位指示“1”的值(位置)“10”。检索装置指定位图b7的位指示“1”的值(位置)“23”。
检索装置将指定的值(位置)连同文件ID和单词ID一起添加到值列表中,并且输出值列表作为检索结果。在本示例中,检索装置将指定的值(位置)“10”连同文件ID“3”和由单词ID“A000h”指示的“Sherlock”一起添加到值列表中。检索装置将指定的值(位置)“23”连同文件ID“3”和由单词ID“A002h”指示的“Baker”一起添加到值列表中。然后,检索装置输出值列表作为检索结果。被输出的检索结果的格式不限于此,并且检索结果的格式能够表示检索关键字存在的文件和位置就足够了。
利用该检索处理,检索装置可以快速缩窄至由检索关键字指示的单词所在的文件和位置。
实施方式中的散列位图恢复处理的示例
接着,将参照图8来描述恢复二维散列位图的处理的示例。图8是示出了实施方式中的散列位图恢复处理的示例的图。如图8所示,散列位图恢复处理将与单词ID对应的散列位图恢复为通过展开散列而提供的位图。例如,当检索到形成检索关键字的单词存在的文件和位置时,执行散列位图恢复处理。
例如,检索装置将图7所示的散列位图h4的散列位图h41和h42中的每一个展开成位图(第一恢复处理)。检索装置针对作为基于一个基数的散列位图的恢复目的地的位图,将散列位图的各个位的值设定到通过将散列位图的各个位的位置加上通过将基数乘以整数(0或更大)而计算出的值而获得的位置。作为示例,检索装置针对作为基于基数29的散列位图h41的恢复目的地的位图b41,将散列位图h41的各个位的值设定到通过将散列位图h41的各个位的位置加上通过将基数29乘以“0”而计算出的值而获得的位置。检索装置针对作为基于基数29的散列位图h41的恢复目的地的位图b41,将散列位图h41的各个位的值设定到通过将散列位图h41的各个位的位置加上通过将基数29乘以“1”而计算出的值而获得的位置。检索装置重复该设定,直到设定了作为基于基数29的恢复目的地的位图b41的最大位的位置处的位的值为止。以相同的方式,检索装置针对作为基于基数31的散列位图h42的恢复目的地的位图b42,将散列位图h42的各个位的值设定到通过将散列位图h42的各个位的位置加上通过将基数31乘以“0”而计算出的值而获得的位置。检索装置针对作为基于基数31的散列位图h42的恢复目的地的位图b42,将散列位图h42的各个位的值设定到通过将散列位图h42的各个位的位置加上通过将基数31乘以“1”而计算出的值而获得的位置。检索装置重复该设定,直到设定了作为恢复目的地的位图b42的最大位的位置处的位的值为止。
检索装置对通过第一恢复处理(第二恢复处理)进行的恢复所提供的各个位图的对应位置处的位执行“与”运算。在本示例中,检索装置对从基于基数29的散列位图h41恢复的位图b41以及从基于基数31的散列位图h42恢复的位图b42执行“与”运算。作为恢复结果,检索装置输出位图b4作为“与”结果。
检索装置还以与针对二维散列索引HI1的散列位图相同的方式恢复三维散列索引HI2的散列位图就足够了。
实施方式中的索引生成装置的配置
接着,将参照图9来描述实施方式中的索引生成装置100的配置。图9是示出了实施方式中的索引生成装置的配置的功能框图。如图9所示,索引生成装置100包括控制器110和存储单元120。
控制器110是执行图2所示的索引生成处理的处理器。控制器110具有定义各种处理过程的程序以及用于存储控制数据的内部存储器,该控制器110利用它们来执行各种处理。控制器110对应于例如集成电路的电子电路如专用集成电路(ASIC)和现场可编程门阵列(FPGA)。可替代地,控制器110对应于电子电路如中央处理单元(CPU)和微处理单元(MPU)。控制器110包括文件读取器111、编码单元112、二维索引生成器113和三维索引生成器114。
存储单元120对应于例如存储装置如非易失性半导体存储元件,如闪存和铁电随机存取存储器(FRAM)(注册商标)。存储单元120包括静态词典121、动态词典122、二维散列索引123和三维散列索引124。二维散列索引123被散列以用于二维位图索引。三维散列索引124被散列以用于三维位图索引。二维位图索引和三维位图索引的相应的结构分别与图2和图3中的结构相同。因此,省略对其的说明。二维散列索引123的结构与通过采集与单词ID对应的散列位图(参见图5)所提供的结构相同,因此省略对其的描述。三维散列索引124的结构与通过采集与单词ID和文件ID对应的散列位图(参见图5)而提供的结构相同,因此省略对其的描述。
静态词典121是通过下述方法提供的词典:基于通用的英语词典、日语词典、教科书等指定单词在文档中出现的出现频率,并且对具有较高出现频率的单词分配较短的代码。注意,静态词典121对应于图2中的静态词典S0。
动态词典122是这样的词典:未被登记在静态词典121中的单词与动态分配的动态码(代码)彼此对应。注意,动态词典122对应于图4中的动态词典D0。对动态词典122的描述与图4中的描述相同。因此省略对其的描述。
文件读取器111将文件F1中的多个文件作为编码目标读取到存储区域中。文件读取器111从存储区域读取目标文件,并且对所读取的目标文件执行词汇分析。文件读取器111将作为词汇分析结果的各个单词按顺序输出到编码单元112。
编码单元112基于静态词典121和动态词典122对单词进行编码。例如,编码单元112确定从文件读取器111输出的单词的字符串是否已被登记在静态词典121中。作为示例,编码单元112确定目标单词的字符串是否命中静态词典121的位过滤器。当目标单词的字符串已被登记在静态词典121中时,编码单元112基于静态词典121对单词的字符串进行编码。作为示例,编码单元112基于静态词典121将单词的字符串编码成与单词的字符串对应的静态码(单词代码)。编码单元112将通过编码提供的单词代码输出到二维索引生成器113。
当目标单词的字符串尚未被登记在静态词典121中时,编码单元112基于动态词典122对单词的字符串进行编码。作为示例,编码单元112确定单词的字符串是否已经存储在动态词典122的缓冲区部分D1中。当单词的字符串尚未被存储在动态词典122的缓冲区部分D1中时,编码单元112将单词的字符串存储在缓冲区部分D1中,并且将单词的字符串被存储的存储位置和所存储的数据长度存储在地址表D2中。编码单元112将单词的字符串编码成地址表D2中的与单词的字符串对应的动态码(单词代码)。当单词的字符串已被存储在动态词典122的缓冲区部分D1中时,编码单元112将单词的字符串编码成与单词的字符串对应的动态码(单词代码)。编码单元112将包含通过编码而提供的单词代码以及由单词代码指示的单词的位置的各条信息输出到二维索引生成器113和三维索引生成器114。
二维索引生成器113基于目标文件的文件ID和通过编码提供的单词代码来生成二维散列索引123。例如,二维索引生成器113接收从编码单元112输出的信息。二维索引生成器113基于接收到的各条信息使用基数α和基数β针对目标文件的文件ID对与单词代码对应的位图的位进行散列,并且将“1”设定到这些位。也就是说,二维索引生成器113将针对目标文件存在或不存在由单词代码所指示的单词设定到二维散列索引123。
作为示例,二维索引生成器113基于与单词ID(单词代码)对应的各个位图的两个散列值(基数)来生成散列位图。也就是说,二维索引生成器113按照从散列位图的第0位到第(基数-1)位的顺序从位图的第0位开始设定各个位。然后,二维索引生成器113再次返回到散列位图的第0位,并且将通过与已被设定到散列位图的值进行“或”运算而计算出的值设定到散列位图。当二维索引生成器113针对与所有单词ID对应的位图生成散列位图时,二维索引生成器113将通过采集所生成的散列位图而提供的二维散列索引123存储在存储单元120中。
三维索引生成器114基于目标文件的文件ID、通过编码而提供的单词代码以及由单词代码指示的单词的位置来生成三维散列索引124。例如,三维索引生成器114接收从编码单元112输出的各条信息。三维索引生成器114基于接收到的各条信息使用基数α和基数β针对由单词代码指示的单词的位置对与单词代码和目标文件的文件ID对应的位图的位进行散列,并且将“1”设定到这些位。即,三维索引生成器114针对目标文件将单词代码和由单词代码指示的单词的位置设定成三维散列索引124。
散列位图生成方法与针对二维索引生成器113所描述的方法相同,因此省略对其的描述。
实施方式中的索引生成处理的处理过程
接着,将参照图10来描述本实施方式中的索引生成处理的处理过程。图10是示出实施方式中的索引生成处理的流程图的示例的图。
如图10所示,索引生成装置110执行预处理(步骤S11)。例如,索引生成装置110确保存储单元120中的各种存储区域。
索引生成装置110从文件F1中的目标文件中读取出一个目标文件作为编码目标,并且将所读取的目标文件存储在用于读取的存储区域中(步骤S12)。索引生成装置110对目标文件执行词汇分析(步骤S12A)。
索引生成装置110从文件头中读取出单词的字符串作为词汇分析的结果(步骤S13)。索引生成装置110对所读取的单词进行编码(步骤S14)。注意,后面将描述对单词的编码处理。然后,索引生成装置110将通过对单词进行的编码处理而输出的单词代码写入到与目标文件对应的经编码的数据的存储区域中(步骤S15)。
随后,索引生成装置110使用基数α和基数β针对指示目标文件的文件ID对与单词代码对应的位图的位进行散列,并且将“1”设定到该位(步骤S16)。例如,索引生成装置110针对基于基数α的散列位图将位图的各个位的值设定到与通过将位图的各个位的位置除以基数α而计算出的余数相匹配的位置。索引生成装置110针对基于基数β的散列位图将位图的各个位的值设定到与通过将位图的各个位的位置除以基数β而计算出的余数相匹配的位置。也就是说,索引生成装置110按照从散列位图的第0位到第(基数-1)位的顺序从位图的第0位开始设定各个位,并且再次返回到散列位图的第0位,并且将第0位设定成通过“或”运算而提供的结果。换言之,索引生成装置110将针对目标文件存在或不存在由单词代码指示的单词设定到二维位图索引123。
随后,索引生成装置110使用基数α和基数β,针对由单词代码指示的单词的位置对与单词代码和文件ID对应的位图的位进行散列,并且将“1”设定到该位(步骤S17)。也就是说,索引生成装置110将单词代码和由单词代码指示的单词针对目标文件的位置设定到三维散列索引124。
索引生成装置110确定该处理是否到达目标文件的终结点(步骤S18)。当确定该处理未到达目标文件的终结点时(在步骤S18处为“否”),索引生成装置110转移到步骤S13,以读取出目标文件的下一个单词。
另一方面,当确定该处理到达目标文件的终结点时(在步骤S18处为“是”),索引生成装置110确定是否存在未被编码的目标文件(步骤S19)。当确定存在未被编码的目标文件时(步骤S19处为“是”),索引生成装置110转移到步骤S12,以对下一个目标文件进行编码。
当确定不存在未被编码的目标文件时(在步骤S19处为“否”),索引生成装置110将通过采集所生成的散列位图而提供的二维散列索引123存储在存储单元120中。索引生成装置110将通过采集所生成的散列位图而提供的三维散列索引124存储在存储单元120中(步骤S20)。然后,索引生成装置110结束索引生成处理。
编码处理的处理过程
接着,将参照图11来描述本实施方式中的编码处理的处理过程。图11是示出了实施方式中的编码处理的流程图的示例的图。假设索引生成装置110已经接收到单词的字符串。
如图11所示,已经接收到单词的字符串的索引生成装置110确定单词的字符串是否已被登记在静态词典121中(步骤S31)。当确定单词的字符串已被登记在静态词典121中(步骤S31处为是)时,索引生成装置110输出登记在静态词典121中的静态码(单词代码)(步骤S32)。然后,索引生成装置110结束编码处理。
另一方面,当确定单词的字符串尚未被登记在静态词典121中时(步骤S31处为“否”),索引生成装置110参考动态词典122(步骤S33)。索引生成装置110确定单词的字符串是否已被登记在动态词典122中(步骤S34)。例如,索引生成装置110确定单词的字符串是否已被登记在动态词典122的缓冲区部分D1中。
当确定单词的字符串已被登记在动态词典122中时(在步骤S34处为是),索引生成装置110转移到步骤S36。
另一方面,当确定单词的字符串尚未被登记在动态词典122中时(步骤S34处为“否”),索引生成装置110将该单词的字符串登记在动态词典122中(步骤S35)。例如,索引生成装置110将单词的字符串存储在动态词典122的缓冲区部分D1中,并且将存储单词的字符串的存储位置和所存储的数据长度存储在地址表D2中。然后,索引生成装置110转移到步骤S36。
在步骤S36处,索引生成装置110输出登记在动态词典122中的单词代码(动态码)(步骤S36)。索引生成装置110将单词的字符串编码成例如地址表D2中的与单词的字符串对应的动态码。索引生成装置110输出通过编码而提供的动态码作为单词代码。然后,索引生成装置110结束编码处理。
实施方式中的检索装置的配置
接着,将参照图12来描述执行本实施方式中的检索处理的检索装置200的配置。图12是示出了实施方式中的检索装置的配置的功能框图。如图12所示,检索装置200包括控制器210和存储单元220。
控制器210是执行图7所示的检索处理的处理器。控制器210具有定义各种处理过程的程序以及用于存储控制数据的内部存储器,并且控制器210利用它们来执行各种处理。控制器210例如对应于集成电路的电子电路如ASIC和FPGA。可替代地,控制器210对应于电子电路如CPU和MPU。控制器210包括检索关键字接收器211、第一恢复单元212、第二恢复单元213、检索处理器214和检索结果输出单元215。
存储单元220对应于例如存储装置如非易失性半导体存储元件,如闪存和FRAM(注册商标)。存储单元220包括二维散列索引221、三维散列索引222、经恢复的位图223和缩小位图224。二维散列索引221的结构与通过采集与单词ID对应的散列位图(参见图5)而提供的结构相同,因此省略对其的描述。三维散列索引222的结构与通过采集与单词ID和文件ID对应的散列位图(参见图5)而提供的结构相同,因此省略对其的描述。经恢复的位图223的结构与位图(参见图8)的结构相同,因此省略对其的描述。缩小位图224的结构与对应于每个单词的“与”结果的位图(参见图8)的结构相同,因此省略对其的描述。
检索关键字接收器211接收检索关键字。检索关键字接收器211接收例如作为检索目标的单词作为检索关键字。作为检索目标的单词可以是单个单词或者多个单词。
第一恢复单元212恢复与由作为检索目标的单词指示的单词ID对应的散列位图。例如,第一恢复单元212通过参考二维散列索引HI1,提取与由检索关键字接收器211接收的单词的单词ID对应的散列位图。第一恢复单元212将所提取的各个散列位图展开为位图(第一恢复处理)。然后,第一恢复单元212对通过第一恢复处理(第二恢复处理)展开的各个位图中的对应位置处的位执行“与”运算。恢复单元212将作为“与”结果而提供的位图保存在经恢复的位图223中作为恢复结果。当存在作为检索目标的多个单词时,第一恢复单元212恢复作为检索目标的各个单词的散列位图,并且将位图作为恢复结果保存在经恢复的位图223中。
第一恢复单元212将包含作为检索目标的单词的文件的文件ID输出到第二恢复单元213。例如,当经恢复的位图223保存了多个位图时,第一恢复单元212对位图执行“与”运算并且将“与”结果保存在缩小位图224中。当经恢复的位图223保存了单个位图时,第一恢复单元212将位图复制到缩小位图224中。然后,第一恢复单元212将缩小位图224的位指示“1”的文件ID输出到第二恢复单元213。
第二恢复单元213恢复与文件ID和由作为检索目标的单词指示的单词ID对应的散列位图。例如,第二恢复单元213通过参考三维散列索引HI2,提取与从第一恢复单元212输出的文件ID和作为检索目标的单词的单词ID对应的散列位图。第二恢复单元213将所提取的散列位图展开为相应位图(第一恢复处理)。然后,第二恢复单元213对通过第一恢复处理(第二恢复处理)展开的各个位图中的对应位置处的位执行“与”运算。第二恢复单元213将作为“与”结果的位图保存在经恢复的位图223中作为恢复结果。
检索处理器214检索单词在包含作为检索目标的单词的文件中的位置。例如,检索处理器214提取由第二恢复单元213保存在经恢复的位图223中的位图的位指示“1”的值(位置)。所提取的值(位置)是单词在包含作为检索目标的单词的文件中的位置。
检索结果输出单元215将由检索处理器214检索的值(位置)连同文件ID和由单词ID指示的单词一起添加到值列表中。然后,检索结果输出单元215输出值列表作为检索结果。
检索处理的流程图
图13是示出了实施方式中的检索处理的流程图的示例的图。
如图13所示,检索装置200确定是否已经接收到作为检索目标的单词(步骤S41)。当确定没有接收到作为检索目标的单词时(步骤S41处为“否”),检索装置200重复确定处理,直到已经接收到作为检索目标的单词为止。
另一方面,当确定已经接收到作为检索目标的单词时(步骤S41处为“是”),检索装置200从存储单元220读取出二维散列索引221和三维散列索引222(步骤S42)。
检索装置200通过参考所读取的二维散列索引221来选择与由作为检索目标的单词指示的单词ID对应的散列位图,并且恢复所选择的散列位图(步骤S43)。检索装置200确定是否存在未处理的单词(步骤S43A)。当确定存在未处理的单词(步骤S43A处为“是”)时,检索装置200转移到步骤S43,以处理作为检索目标的下一个单词。
另一方面,当确定不存在未处理的单词(步骤S43A处为“否”)并且存在多个经恢复的位图时,检索装置200对经恢复的位图执行“与”运算,并且将“与”结果保存在缩小位图224中(步骤S43B)。然后,检索装置200获取缩小位图224的位指示“1”的文件ID(步骤S44)。
检索装置200通过参考三维散列索引222来针对所获取的每个文件ID选择与单词ID和文件ID对应的散列位图,并且恢复所选择的散列位图(步骤S45)。然后,检索装置200获取针对每个单词ID和每个文件ID的位指示“1”的值(位置)(步骤S46)。
检索装置200将单词ID、文件ID和值(位置)添加到值列表(步骤S47)。然后,检索装置200输出值列表(步骤S48),并且结束检索处理。
使用检索处理,检索装置200可以通过二维散列索引221和三维散列索引222来指定单词在包含该单词的文件中的位置。
实施方式的效果
根据上述实施方式,在对各个输入文件进行词汇分析的过程中,索引生成装置100生成关于存在或不存在各个关键字以及存在各个关键字时各个关键字针对各个文件的存在位置的各条信息。然后,索引生成装置100基于所生成的各条信息来生成关键字和针对各个文件的位置的索引信息。利用该配置,索引生成装置100通过对输入文件执行词汇分析来生成包含关键字和位置的索引信息,从而以压缩格式一遍生成索引信息。也就是说,索引生成装置100可以容易地生成与文件、关键字及其位置对应的索引信息。
与实施方式相关的其他模式
在下文中,将描述对上述实施方式的一些修改。除了以下修改之外,在不脱离本发明的主旨的范围内可以适当地进行设计上的变化。
在假设32位寄存器的情况下,本实施方式中的索引生成装置100基于散列值(基数)29和31对各个位图进行散列。在本实施方式中,一个位图具有44位。然而,散列值(基数)29和31是示例,并且散列值不限于此。每个位图的位数也是示例,并且不限于44位。根据多个文件中的每个文件中的单词的类型数来确定两个散列值(基数)就足够了。当假定单词的类型数为例如10,000时,选择两个基数,使得由通过除以一个基数计算出的余数和通过除以另一个基数计算出的余数所表达的二维矩阵的数目大约为10,000。两个基数是相邻的质数就足够了。作为示例,当矩阵的数目为10,000时,所选择的两个质数为97和101。也就是说,基于以下估计来确定基数:在具有大约为10,000的最小公倍数的二维矩阵空间中,使用针对特定单词的一个散列和另一个散列计算出的余数的组合不与针对其他单词计算出的余数的组合相冲突(交叠)。
在本实施方式中,索引生成装置100基于与单词ID对应的位图以及与单词ID和文件ID对应的位图中的每一者的两个散列值(基数)来生成散列位图。当生成散列位图时,索引生成装置100在某些情况下检测散列冲突(散列噪声)。在与例如具有超高频率的单词对应的位图中,因为具有超高频率的单词存在于多个文件中,所以多个位置处的位值被设定成“1”。当位图被散列时,在一些情况下,以交叠的方式在散列位图的相同位置处设定“1”。具有超高频率的单词的示例包括“the”和“on”。索引生成装置100针对散列噪声执行散列冲突监测并且通过测量0/1比率或者位图的划分来减少散列噪声就足够了。当在散列位图中的任何一个中连续地发生冲突时,索引生成装置100使用存在或不存在与引起冲突的散列位图对应的位图的信息来对存在与不存在(1/0)之间的比率进行计数。当“1”的比率高于阈值时,索引生成装置100将与引起冲突的散列位图对应的位图进行分割。作为示例,索引生成装置100提取与引起冲突的散列位图对应的位图的偶数位置处的位,并且新生成位图。另外,索引生成装置100提取与引起冲突的散列位图对应的位图的奇数位置处的位,并且新生成位图。然后,索引生成装置100将所分割的新位图存储在例如作为分割目的地的具有低频率的单词的区域中。索引生成装置100针对两个散列位图中的任何一个设定分割目的地。索引生成装置100基于在位图分割之后分割目的地处的各个位图的两个散列值(基数)来生成各个散列位图。利用这种配置,即使当散列位图的各条数据彼此冲突时,索引生成装置100也在进行散列之前对位图的第偶数条数据和第奇数条数据进行分割和散列,从而避免各条数据的冲突。
当检索装置200接收到作为检索目标的单词时,检索单词在包含该单词的文件中的位置。也就是说,检索装置200使用二维散列索引221恢复与由作为检索目标而接收的单词指示的单词ID对应的散列位图,并且获取其位指示“1”的文件ID。检索装置200使用三维散列索引222恢复与单词ID和所获取的文件ID对应的散列位图,并且指定其位指示“1”的值(位置),以检索作为检索目标的单词的位置。然而,检索装置200不限于此,并且检索装置200可以在接收到单词和单词的位置时检索与作为检索目标的单词和单词的位置对应的文件。也就是说,检索装置200使用三维散列索引222恢复与由作为检索目标而接收的单词指示的单词ID和单词的位置对应的散列位图,并且指定其位指示“1”的文件ID。利用该配置,检索装置200可以仅通过三维散列索引222来指定与具有单词和单词位置二者的检索条件相匹配的文件。
本实施方式中的索引生成装置100基于相邻的散列值(基数)来生成通过二维地(对单词轴和文件轴)和三维地(对单词轴、文件轴和位置轴)应用散列而提供的散列索引。然而,索引生成装置100可以采用块轴而不是文件轴。也就是说,存在或不存在单词ID的信息可以基于块。
此外,除非另有规定,否则可以按照期望改变包含实施方式中描述的处理过程、控制过程、具体名称、各种数据和参数的各条信息。
硬件配置
下面描述用于上述实施方式的硬件和软件。图14是示出了计算机1的硬件配置的示例的图。计算机1包括处理器301、随机存取存储器(RAM)302、只读存储器(ROM)303、驱动装置304、存储介质305、输入接口(I/F)306、输入装置307、输出接口(I/F)308、输出装置309、通信接口(I/F)310、存储区域网(SAN)接口(I/F)311和总线312。各个硬件经由总线312彼此连接。
RAM 302是可读写的存储器装置,并且由例如半导体存储器如静态RAM(SRAM)和动态RAM(DRAM)或者不同于RAM的闪存来实现。ROM 303还包括可编程ROM(PROM)。驱动装置304是对记录在存储介质305中的信息执行读取和写入中的至少任何一种的装置。在存储介质305中存储有由驱动装置304写入的信息。存储介质305是例如存储介质如硬盘、闪存如固态驱动器(SSD)、光盘(CD)、数字通用盘(DVD)和蓝光(注册商标)盘。计算机1包括例如用于多种类型的存储介质中的每一种的驱动装置304和存储介质305。
输入接口306连接到输入装置307,并且是将从输入装置307接收的输入信号传输到处理器301的电路。输出接口308连接到输出装置309,并且是使输出装置309根据处理器301的指令执行输出的电路。通信接口310是控制通过网络3进行的通信的电路。通信接口310是例如网络接口卡(NIC)。SAN接口311是控制使用存储区域网络与连接到计算机1的存储装置进行的通信的电路。SAN接口311是例如主机总线适配器(HBA)。
输入装置307是根据操作来传输输入信号的装置。输入装置是例如按键装置如键盘和安装在计算机1的主体上的按钮或者定点装置如鼠标和触摸面板。输出装置309是根据计算机1的控制来输出信息的装置。输出装置309是例如图像输出装置(显示装置)如显示器或者音频输出装置如扬声器。例如,输入输出装置如触摸屏被用作输入装置307和输出装置309。输入装置307和输出装置309可以与计算机1集成在一起,或者可以是例如从外部连接到计算机1而不被包括在计算机1中的装置。
例如,处理器301将存储在ROM 303和存储介质305中的程序读取到RAM 302中,并且根据所读取的程序的过程来执行控制器110和210的各个处理。在这种情况下,RAM 302被用作处理器301的工作区域。在ROM 303和存储介质305中存储有程序文件(后面将描述的应用程序24、中间件23、OS 22等)和数据文件(例如,静态词典121、二维散列索引123和三维散列索引124),并且RAM 302被用作处理器301的工作区域以实现存储单元120和220的功能。将参照图15来描述处理器301读取出的程序。
图15是示出了在计算机中运行的程序的配置的示例的图。在计算机1中,运行着控制图15所示的硬件组HW 21(301至312)的操作系统(OS)22。处理器301根据OS 22来运行进程,以控制和管理硬件组HW 21,使得硬件组21根据应用程序AP 24或中间件MW 23来执行各个处理。此外,在计算机1中,中间件MW 23或应用程序AP 24被读取到RAM 302中以由处理器301执行。
当调用索引生成功能以实现控制器110的功能时,处理器301基于中间件23或应用程序24的至少一部分来执行各个处理(通过基于OS 22针对各个处理来控制硬件组21)。当调用检索功能以实现控制器210的功能时,处理器301基于中间件23或应用程序24的至少一部分来执行各个处理(通过基于OS 22针对各个处理来控制硬件组21)。编码功能和检索功能可以被包括在应用程序24本身中,或者可以是根据应用程序24而被调用以执行的中间件23的一部分。
图16是示出了实施方式中的系统中的装置的配置的示例的图。图16中的系统包括计算机1a、计算机1b、基站2和网络3。计算机1a以无线方式或有线方式连接到与计算机1b连接的网络3。
索引生成装置100和检索装置200可以被包括在图16所示的计算机1a或计算机1b中的任一个中。可以采用其中计算机1b具有索引生成装置100的功能而计算机1a具有检索装置200的功能的配置,或者可以采用其中计算机1a具有索引生成装置100的功能而计算机1b具有检索装置200的功能的配置。可替代地,计算机1a和计算机1b二者都可以具有索引生成装置100的功能和检索装置200的功能。
根据一个方面,可以容易地以压缩格式一遍生成包含文件、关键字及其出现位置的索引。
Claims (2)
1.一种索引搜索方法,包括:
接收包括单词的搜索请求;
首先基于二维位图索引生成压缩格式的二维散列索引,所述二维散列索引包括通过两个不同的基数对与单词代码对应的二维位图索引进行散列而获得的两个散列位图,所述二维位图索引的X轴指示目标文件的文件ID,并且所述二维位图索引的Y轴指示单词代码,所述二维位图索引指示每个单词在多个输入文件中是存在还是不存在;
然后基于三维位图索引生成压缩格式的三维散列索引,所述三维散列索引包括通过两个不同的基数根据单词的位置对所述三维位图索引进行散列而获得的两个散列位图,所述三维位图索引的X轴指示相应文件的单词的位置,所述三维位图索引的Y轴指示相应的多个单词的单词代码,并且所述三维位图索引的Z轴指示相应文件的文件ID;
通过参考所述二维散列索引首先指定包括所述搜索请求中的单词的文件;以及
然后通过参考所述三维散列索引指定在上述首先指定步骤中所指定的文件中的单词的出现位置。
2.一种索引搜索装置,包括:
接收单元,其接收包括单词的搜索请求;
第一生成单元,其基于二维位图索引生成压缩格式的二维散列索引,所述二维散列索引包括通过两个不同的基数对与单词代码对应的二维位图索引进行散列而获得的两个散列位图,所述二维位图索引的X轴指示目标文件的文件ID,并且所述二维位图索引的Y轴指示单词代码,所述二维位图索引指示每个单词在多个输入文件中是存在还是不存在;
第二生成单元,其基于三维位图索引生成压缩格式的三维散列索引,所述三维散列索引包括通过两个不同的基数根据单词的位置对所述三维位图索引进行散列而获得的两个散列位图,所述三维位图索引的X轴指示相应文件的单词的位置,所述三维位图索引的Y轴指示相应的多个单词的单词代码,并且所述三维位图索引的Z轴指示相应文件的文件ID;
第一指定单元,其通过参考所述二维散列索引指定包括所述搜索请求中的单词的文件;以及
第二指定单元,其通过参考所述三维散列索引指定由所述第一指定单元所指定的文件中的单词的出现位置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2016083243A JP6720664B2 (ja) | 2016-04-18 | 2016-04-18 | インデックス生成プログラム、インデックス生成装置、インデックス生成方法、検索プログラム、検索装置および検索方法 |
JP2016-083243 | 2016-04-18 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107305586A CN107305586A (zh) | 2017-10-31 |
CN107305586B true CN107305586B (zh) | 2021-10-15 |
Family
ID=58549054
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710249150.XA Active CN107305586B (zh) | 2016-04-18 | 2017-04-17 | 索引生成方法、索引生成装置及搜索方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11080234B2 (zh) |
EP (2) | EP3770770A1 (zh) |
JP (1) | JP6720664B2 (zh) |
CN (1) | CN107305586B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10652248B2 (en) * | 2016-07-28 | 2020-05-12 | Molecula Corp. | Systems and methods of managing data rights and selective data sharing |
JP6805720B2 (ja) | 2016-10-21 | 2020-12-23 | 富士通株式会社 | データ検索プログラム、データ検索装置およびデータ検索方法 |
JP6805927B2 (ja) | 2017-03-28 | 2020-12-23 | 富士通株式会社 | インデックス生成プログラム、データ検索プログラム、インデックス生成装置、データ検索装置、インデックス生成方法、及びデータ検索方法 |
JP7059516B2 (ja) * | 2017-03-29 | 2022-04-26 | 富士通株式会社 | 符号化プログラム、符号化装置および符号化方法 |
JP6984321B2 (ja) * | 2017-10-31 | 2021-12-17 | 富士通株式会社 | データ生成プログラム、データ生成方法および情報処理装置 |
CN108595508B (zh) * | 2018-03-22 | 2020-11-13 | 佛山市顺德区中山大学研究院 | 一种基于后缀数组的自适应索引构建方法及系统 |
JP7006462B2 (ja) * | 2018-04-02 | 2022-01-24 | 富士通株式会社 | データ生成プログラム、データ生成方法および情報処理装置 |
JP7135399B2 (ja) * | 2018-04-12 | 2022-09-13 | 富士通株式会社 | 特定プログラム、特定方法および情報処理装置 |
JP7180132B2 (ja) * | 2018-06-12 | 2022-11-30 | 富士通株式会社 | 処理プログラム、処理方法および情報処理装置 |
JPWO2022249478A1 (zh) | 2021-05-28 | 2022-12-01 | ||
CN113568912B (zh) * | 2021-07-27 | 2023-05-02 | 重庆紫光华山智安科技有限公司 | 一种设备编码的管理方法、系统、介质及终端 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1946220A (zh) * | 2005-09-08 | 2007-04-11 | 三星电子株式会社 | 在移动通信终端中查找用户数据的方法 |
CN102024047A (zh) * | 2010-12-14 | 2011-04-20 | 青岛普加智能信息有限公司 | 数据检索方法及装置 |
CN102567421A (zh) * | 2010-12-27 | 2012-07-11 | 北大方正集团有限公司 | 文档检索方法和装置 |
CN104283930A (zh) * | 2013-07-11 | 2015-01-14 | 一零四资讯科技股份有限公司 | 安全索引的关键字搜索系统及建立该系统的方法 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS63189934A (ja) | 1987-02-02 | 1988-08-05 | Fujitsu Ltd | デ−タベ−ス副次エントリ処理方式 |
JP2753228B2 (ja) | 1987-04-30 | 1998-05-18 | 株式会社日立製作所 | データ処理装置 |
JPH08180066A (ja) * | 1994-12-26 | 1996-07-12 | Toshiba Corp | インデックス作成方法、文書検索方法及び文書検索装置 |
JPH09114854A (ja) * | 1995-10-20 | 1997-05-02 | D I S:Kk | 文書検索システム |
JPH10261969A (ja) * | 1997-03-19 | 1998-09-29 | Hitachi Ltd | データ圧縮方法および装置 |
US7062567B2 (en) * | 2000-11-06 | 2006-06-13 | Endeavors Technology, Inc. | Intelligent network streaming and execution system for conventionally coded applications |
US8831995B2 (en) * | 2000-11-06 | 2014-09-09 | Numecent Holdings, Inc. | Optimized server for streamed applications |
US20080270363A1 (en) * | 2007-01-26 | 2008-10-30 | Herbert Dennis Hunt | Cluster processing of a core information matrix |
WO2010010430A2 (en) * | 2008-07-25 | 2010-01-28 | Lee Kok-Wah | Methods and systems to create big memorizable secrets and their applications in information engineering |
JP5510563B2 (ja) * | 2011-02-08 | 2014-06-04 | 富士通株式会社 | 検索プログラム、検索装置、および検索方法 |
EP2757488B1 (en) | 2011-09-14 | 2019-02-20 | Fujitsu Limited | Extraction method, extraction program, extraction device, and extraction system |
WO2013069149A1 (ja) * | 2011-11-11 | 2013-05-16 | 株式会社日立製作所 | データ検索装置、データの検索方法及びプログラム |
JP6011618B2 (ja) * | 2012-05-24 | 2016-10-19 | 富士通株式会社 | 検索プログラム、検索方法、検索装置、記憶プログラム、記憶方法及び記憶装置 |
JP6476647B2 (ja) | 2014-08-20 | 2019-03-06 | 富士通株式会社 | 圧縮プログラム、圧縮装置、圧縮方法、伸長プログラム、伸長装置および伸長方法 |
JP6543922B2 (ja) * | 2014-12-10 | 2019-07-17 | 富士通株式会社 | インデックス生成プログラム |
-
2016
- 2016-04-18 JP JP2016083243A patent/JP6720664B2/ja active Active
-
2017
- 2017-04-17 CN CN201710249150.XA patent/CN107305586B/zh active Active
- 2017-04-17 US US15/488,685 patent/US11080234B2/en active Active
- 2017-04-18 EP EP20196907.8A patent/EP3770770A1/en not_active Withdrawn
- 2017-04-18 EP EP17166792.6A patent/EP3236369A1/en not_active Ceased
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1946220A (zh) * | 2005-09-08 | 2007-04-11 | 三星电子株式会社 | 在移动通信终端中查找用户数据的方法 |
CN102024047A (zh) * | 2010-12-14 | 2011-04-20 | 青岛普加智能信息有限公司 | 数据检索方法及装置 |
CN102567421A (zh) * | 2010-12-27 | 2012-07-11 | 北大方正集团有限公司 | 文档检索方法和装置 |
CN104283930A (zh) * | 2013-07-11 | 2015-01-14 | 一零四资讯科技股份有限公司 | 安全索引的关键字搜索系统及建立该系统的方法 |
Also Published As
Publication number | Publication date |
---|---|
US20170300507A1 (en) | 2017-10-19 |
EP3236369A1 (en) | 2017-10-25 |
US11080234B2 (en) | 2021-08-03 |
CN107305586A (zh) | 2017-10-31 |
JP2017194762A (ja) | 2017-10-26 |
EP3770770A1 (en) | 2021-01-27 |
JP6720664B2 (ja) | 2020-07-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107305586B (zh) | 索引生成方法、索引生成装置及搜索方法 | |
US9793920B1 (en) | Computer-readable recording medium, encoding device, and encoding method | |
US10360183B2 (en) | Encoding device, encoding method, decoding device, decoding method, and computer-readable recording medium | |
WO2015145647A1 (ja) | ストレージ装置とデータ処理方法及びストレージシステム | |
EP3236367B1 (en) | Encoding program, encoding method, encoding device, retrieval program, retrieval method, and retrieval device | |
US9882582B2 (en) | Non-transitory computer-readable recording medium, encoding method, encoding device, decoding method, and decoding device | |
US11182341B2 (en) | Recording medium recording indexed data generation program, indexed data generation method and retrieval method | |
JP6540308B2 (ja) | 符号化プログラム、符号化方法、符号化装置、復号化プログラム、復号化方法および復号化装置 | |
JP6551131B2 (ja) | インデックス生成プログラム、インデックス生成装置、インデックス生成方法、検索プログラム、検索装置および検索方法 | |
US11055328B2 (en) | Non-transitory computer readable medium, encode device, and encode method | |
JP2018061166A (ja) | 符号化プログラム、符号化装置および符号化方法 | |
JP6805720B2 (ja) | データ検索プログラム、データ検索装置およびデータ検索方法 | |
US10997139B2 (en) | Search apparatus and search method | |
US10747725B2 (en) | Compressing method, compressing apparatus, and computer-readable recording medium | |
JP6931442B2 (ja) | 符号化プログラム、インデックス生成プログラム、検索プログラム、符号化装置、インデックス生成装置、検索装置、符号化方法、インデックス生成方法および検索方法 | |
JP2019121861A (ja) | 符号化プログラム、動的辞書の生成プログラム、符号化方法、動的辞書の生成方法、符号化装置および復号化装置 | |
JP2018182466A (ja) | 符号化プログラム、符号化方法および符号化装置 | |
US20210357438A1 (en) | Computer-readable recording medium, index creation device, index creation method, computer-readable recording medium, search device, and search method |
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 |