CN108520051A - 一种提升Apache Lucene修饰符搜索性能的方法 - Google Patents
一种提升Apache Lucene修饰符搜索性能的方法 Download PDFInfo
- Publication number
- CN108520051A CN108520051A CN201810298335.4A CN201810298335A CN108520051A CN 108520051 A CN108520051 A CN 108520051A CN 201810298335 A CN201810298335 A CN 201810298335A CN 108520051 A CN108520051 A CN 108520051A
- Authority
- CN
- China
- Prior art keywords
- sub
- condition
- search
- modifier
- document identification
- 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.)
- Pending
Links
Classifications
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/103—Formatting, i.e. changing of presentation of documents
- G06F40/117—Tagging; Marking up; Designating a block; Setting of attributes
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种提升Apache Lucene修饰符搜索性能的方法,所述方法包括:获取用户输入的目标内容;将所述目标内容拆分为一个或者多个子条件,对每个子条件进行搜索;当所述子条件搜索为修饰符搜索时,则找出所有与所述子条件匹配的词条单元;当缓存中存在与所述词条单元对应的文档标识时,则从缓存中取出与词条单元匹配的文档标识;将所有词条单元得到的文档标识作为所述子条件的搜索结果;根据子条件之间的组合关系生成最终搜索结果,并将所述最终搜索结果返回给用户。本发明通过对Lucene缓存机制的改进,使得Lucene修饰符搜索的缓存命中率大幅提高,从而有效提升了Lucene修饰符搜索的性能。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种提升Apache Lucene修饰符搜索性能的方法、***及计算机可读存储介质。
背景技术
Apache Lucene是一个开源的全文检索引擎工具包(以下简称Lucene),提供了完整的查询引擎和索引引擎。Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标***中实现全文检索的功能,或者是以此为基础建立起完整的全文检索引擎。Lucene是当前以及最近几年最受欢迎的免费Java信息检索程序库,Eclipse、淘宝、百度等很多著名的产品和公司都使用了Lucene。
Lucene为用户提供了简单而又强大的搜索功能,其中,修饰符搜索(TermModifiers)是最重要的搜索方法,包括了通配符搜索、正则表达式搜索、模糊搜索、邻近搜索、范围搜索和项优先级搜索(Boosting aterm)这6种搜索方式。
修饰符搜索的原理是,根据用户的搜索条件,例如通配符搜索“te?t”,首先遍历词典,找出匹配搜索条件的Term,例如“test”、“text”等,然后从倒排表上找出Term所对应的文档id集合。对于多个子条件组合的搜索条件(例如“AND”、“OR”、“NOT”等布尔操作符),Lucene首先会对子条件进行搜索,最后根据子条件之间的组合关系将对应结果的文档id集合进行组合,生成最终搜索结果返回给用户。在修饰符搜索的过程中,如果符合条件的Term数量很大,Lucene需要进行大量的倒排表查询操作,而倒排表存储在磁盘上,因此不仅磁盘和CPU资源耗费很大,搜索速度也比较慢。
为了提高搜索性能,Lucene内部采用了搜索缓存机制,将搜索条件和搜索结果以“<key:value>”的方式在内存中缓存下来,以提供给后续搜索利用。然而,Lucene缓存的key是完整的搜索条件,当数据不断更新写入,且查询条件不断变化的情况下,Lucene的缓存命中率极低,对提高搜索性能的作用非常有限。
发明内容
本发明的主要目的在于提供一种提升Apache Lucene修饰符搜索性能的方法,旨在对Lucene缓存机制的改进,使得Lucene修饰符搜索的缓存命中率大幅提高,从而有效提升了Lucene修饰符搜索的性能。
为实现上述目的,本发明提供的一种提升Apache Lucene修饰符搜索性能的方法,所述提升Apache Lucene修饰符搜索性能的方法包括如下步骤:
获取用户输入的目标内容;
将所述目标内容拆分为一个或者多个子条件,对每个子条件进行搜索;
当所述子条件搜索为修饰符搜索时,则找出所有与所述子条件匹配的词条单元;
当缓存中存在与所述词条单元对应的文档标识时,则从缓存中取出与词条单元匹配的文档标识;
将所有词条单元得到的文档标识作为所述子条件的搜索结果;
根据子条件之间的组合关系生成最终搜索结果,并将所述最终搜索结果返回给用户。
优选地,所述将所述目标内容拆分为一个或者多个子条件的步骤之前还包括:
以所述目标内容的完整内容为检索对象在缓存中进行匹配;
若根据所述目标内容的完整内容直接匹配到相同内容,则直接从缓存中提取处匹配到的结果;
若根据所述目标内容的完整内容未匹配到相同内容,则进入将所述目标内容拆分为一个或者多个子条件的步骤。
优选地,所述将所述目标内容拆分为一个或者多个子条件,对每个子条件进行搜索的步骤之后还包括:
在所述子条件搜索不是修饰符搜索时,从倒排表中获取与所述子条件符合的文档标识;
在所有子条件搜索完成后,进入根据子条件之间的组合关系生成最终搜索结果,并将所述最终搜索结果返回给用户的步骤。
优选地,所述根据子条件之间的组合关系生成最终搜索结果的步骤之后还包括:
将得到的最终搜索结果、搜索条件、搜索过程中匹配的词条单元以及词条单元对应的文档标识均进行缓存。
优选地,所述当所述子条件为修饰符搜索时,找出每个与所述子条件匹配的词条单元的步骤之后还包括:
在缓存中不存在与词条单元匹配的文档标识时,则从倒排表中获取与该词条单元对应的文档标识;
将该词条单元与对应的文档标识进行缓存并进入根据子条件之间的组合关系生成最终搜索结果,并将所述最终搜索结果返回给用户的步骤。
优选地,所述文档标识是与所述词条单元唯一对应的文档标识。
本发明的提升Apache Lucene修饰符搜索性能的方法通过获取用户输入的目标内容;将所述目标内容拆分为一个或者多个子条件,对每个子条件进行搜索;当所述子条件搜索为修饰符搜索时,则找出所有与所述子条件匹配的词条单元;当缓存中存在与所述词条单元对应的文档标识时,则从缓存中取出与词条单元匹配的文档标识;将所有词条单元得到的文档标识作为所述子条件的搜索结果;根据子条件之间的组合关系生成最终搜索结果,并将所述最终搜索结果返回给用户。本发明通过对Lucene缓存机制的改进,使得Lucene修饰符搜索的缓存命中率大幅提高,从而有效提升了Lucene修饰符搜索的性能。
附图说明
图1为本发明提升Apache Lucene修饰符搜索性能的方法第一实施例的流程示意图;
图2为本发明提升Apache Lucene修饰符搜索性能的方法第二实施例的流程示意图;
图3为本发明提升Apache Lucene修饰符搜索性能的方法第三实施例的流程示意图;
图4为本发明提升Apache Lucene修饰符搜索性能的方法第四实施例的流程示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明提供一种提升Apache Lucene修饰符搜索性能的方法,该方法应用于Apache Lucene中,在第一实施例中,参见图1,所述提升Apache Lucene修饰符搜索性能的方法包括如下步骤:
步骤S10,获取用户输入的目标内容;
本实施例中,用户输入需要检索查询的目标内容,比如说用户需要检索查询的目标内容为“中国旅游城市”,则将以此为搜索条件,对用户输入的内容进行搜索。
步骤S20,将所述目标内容拆分为一个或者多个子条件,对每个子条件进行搜索;
进一步地,将用户输入的目标内容拆分为一个或者多个子条件,具体的拆分的子条件的数量根据用户输入的目标内容确定,拆分后的子条件应满足不可再拆分的条件。如,用户输入的检索目标内容为“中国旅游城市”,则可以将“中国旅游城市”拆分为“中国”、“旅游”以及“城市”这几个子条件,而后分别对每一个子条件进行搜索。
步骤S30,当所述子条件搜索为修饰符搜索时,则找出所有与所述子条件匹配的词条单元;
在将所述目标内容拆分为多个不可再拆分的子条件时,再对每个子条件进行搜索。在对每个子条件进行搜索前,先判断该子条件是否为修饰符搜索。若该子条件搜索为修饰符搜索,则遍历字典,找出每个与所述子条件匹配的词条单元。
还是以用户输入的目标内容为“中国旅游城市”为例进行说明。将“中国旅游城市”拆分为“中国”、“旅游”以及“城市”这几个子条件,在进一步判断这几个子条件是否为修饰符搜索。由于“中国”、“旅游”以及“城市”这三个子条件均不是修饰符搜索,则将直接从倒排表中获取与所述子条件符合的文档标识。
而当用户输入的内容为“中国旅?城市”时,拆分为“中国”、“旅?”以及“城市”这几个子条件,由于“中国”以及“城市”这两个子条件的搜索并不是修饰符搜索,则将直接从倒排表中获取与所述子条件符合的文档标识。但是由于“旅?”这一个子条件是采用修饰符搜索,则先遍历字典,找出与该子条件匹配的词条单元,此时,与旅相关的所有单词词组都将匹配到。
步骤S40,当缓存中存在与所述词条单元对应的文档标识时,则从缓存中取出与词条单元匹配的文档标识;
进一步地,在获得到与所述子条件匹配的所有词条单元时,进一步判断缓存中是否有与匹配到的词条单元对应的文档标识,如果缓存中有对应的文档标识,则直接从缓存中取出与词条单元匹配的文档标识。如果缓存中没有对应的文档标识,则从倒排表中获取该词条单元对应的文档标识。
步骤S50,将所有词条单元得到的文档标识作为所述子条件的搜索结果;
步骤S60,根据子条件之间的组合关系生成最终搜索结果,并将所述最终搜索结果返回给用户。
本实施例中,在搜索过程中,将最终得到的搜索结果、搜索条件、搜索过程中匹配的词条单元以及词条单元对应的文档标识均进行缓存。通过上述对Lucene的缓存机制改进后可以大幅提高修饰符搜索的缓存命中率,减少大量磁盘IO交互带来的***资源耗费,从而有效提升Lucene修饰符搜索的性能。
需要说明的是,根据子条件之间的组合关系生成最终搜索结果是在所有子条件均进行搜索完毕之后发生,在所有子条件均进行搜索完毕之后,将子条件之间的组合关系集合子条件的搜索结果生成最终的搜索结果。
本实施例通过获取用户输入的目标内容;将所述目标内容拆分为一个或者多个子条件,对每个子条件进行搜索;当所述子条件搜索为修饰符搜索时,则找出所有与所述子条件匹配的词条单元;当缓存中存在与所述词条单元对应的文档标识时,则从缓存中取出与词条单元匹配的文档标识;将所有词条单元得到的文档标识作为所述子条件的搜索结果;根据子条件之间的组合关系生成最终搜索结果,并将所述最终搜索结果返回给用户。本发明实施例通过对Lucene缓存机制的改进,使得Lucene修饰符搜索的缓存命中率大幅提高,从而有效提升了Lucene修饰符搜索的性能。
进一步地,请参阅图2,基于本发明提升Apache Lucene修饰符搜索性能的方法第一实施例,在本发明提升Apache Lucene修饰符搜索性能的方法第二实施例中,上述步骤S20之前还包括:
步骤S11,以所述目标内容的完整内容为检索对象在缓存中进行匹配;
步骤S12,若根据所述目标内容的完整内容直接匹配到相同内容,则直接从缓存中提取处匹配到的结果,并进入将所述最终搜索结果返回给用户的步骤;
步骤S13,若根据所述目标内容的完整内容未匹配到相同内容,则进入步骤S20。
本实施例中,在将所述目标内容拆分为多个子条件之前,直接以所述目标内容的完整内容进行检索,并直接在缓存中进行匹配。如直接在缓存中匹配“中国旅游城市”这一需要检索的完整内容,当缓存中匹配到了与该内容相同的结果,则直接从缓存中将该匹配结果匹配出来,若能直接从缓存中匹配出到需要内容,则将结束搜索,并将所述最终搜索结果返回给用户。
本实施例通过以所述目标内容的完整内容在缓存中进行匹配;若根据所述目标内容的完整内容直接匹配到相同内容,则直接从缓存中提取处匹配到的结果;若根据所述目标内容的完整内容未匹配到相同内容,则进入将所述目标内容拆分为一个或者多个子条件的步骤。通过本实施例直接对目标内容的完整内容进行检索,在此情况下,若能准确检索到与目标内容相同的内容,则能有效节省检索步骤,提高了检索效率。
进一步地,请参阅图3,基于本发明提升Apache Lucene修饰符搜索性能的方法第二实施例,在本发明提升Apache Lucene修饰符搜索性能的方法第三实施例中,所述步骤S20之后还包括:
步骤S21,在所述子条件搜索不是修饰符搜索时,从倒排表中获取与所述子条件符合的文档标识;
步骤S22,在所有子条件搜索完成后,进入步骤S60。
本实施例中,以用户输入的目标内容为“中国旅游城市”为例进行说明。将“中国旅游城市”拆分为“中国”、“旅游”以及“城市”这几个子条件,在进一步判断这几个子条件是否为修饰符搜索。由于“中国”、“旅游”以及“城市”这三个子条件均不是修饰符搜索,则将直接从倒排表中获取与所述子条件符合的文档标识。并且在所有子条件都搜索完成后,根据子条件之间的组合关系生成最终搜索结果,并且将过程中的搜索条件以及搜索结果进行缓存,将最终搜索结果返回给客户。
本实施例通在所述子条件搜索不是修饰符搜索时,从倒排表中获取与所述子条件符合的文档标识;在所有子条件搜索完成后,进入根据子条件之间的组合关系生成最终搜索结果,并将所述最终搜索结果返回给用户的步骤。
进一步地,参见图4,所述步骤S30之后还包括:
步骤S31,在缓存中不存在与词条单元匹配的文档标识时,则从倒排表中获取与该词条单元对应的文档标识;
步骤S32,将该词条单元与对应的文档标识进行缓存并进入步骤S60。
本实施例中,在缓存中不存在与词条单元匹配的文档标识时,则进一步从倒排表中获取该词条单元对应的文档标识。并且将该词条单元与对应的文档标识一起缓存。
本实施例中,在缓存中不存在与词条单元匹配的文档标识时,则从倒排表中获取与该词条单元对应的文档标识;将该词条单元与对应的文档标识进行缓存并进入根据子条件之间的组合关系生成最终搜索结果,并将所述最终搜索结果返回给用户的步骤。
本发明进一步提供一种提升修饰符搜索性能的***,所述提升修饰符搜索性能的***包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的提升修饰符搜索性能的程序,所述提升修饰符搜索性能的程序被所述处理器执行时实现如下方法步骤:
获取用户输入的目标内容;
将所述目标内容拆分为一个或者多个子条件,对每个子条件进行搜索;
当所述子条件搜索为修饰符搜索时,则找出所有与所述子条件匹配的词条单元;
当缓存中存在与所述词条单元对应的文档标识时,则从缓存中取出与词条单元匹配的文档标识;
将所有词条单元得到的文档标识作为所述子条件的搜索结果;
根据子条件之间的组合关系生成最终搜索结果,并将所述最终搜索结果返回给用户。
本实施例中,用户输入需要检索查询的目标内容,比如说用户需要检索查询的目标内容为“中国旅游城市”,则将以此为搜索条件,对用户输入的内容进行搜索。
进一步地,将用户输入的目标内容拆分为一个或者多个子条件,具体的拆分的子条件的数量根据用户输入的目标内容确定,拆分后的子条件应满足不可再拆分的条件。如,用户输入的检索目标内容为“中国旅游城市”,则可以将“中国旅游城市”拆分为“中国”、“旅游”以及“城市”这几个子条件,而后分别对每一个子条件进行搜索。
在将所述目标内容拆分为多个不可再拆分的子条件时,再对每个子条件进行搜索。在对每个子条件进行搜索前,先判断该子条件是否为修饰符搜索。若该子条件搜索为修饰符搜索,则遍历字典,找出每个与所述子条件匹配的词条单元。
还是以用户输入的目标内容为“中国旅游城市”为例进行说明。将“中国旅游城市”拆分为“中国”、“旅游”以及“城市”这几个子条件,在进一步判断这几个子条件是否为修饰符搜索。由于“中国”、“旅游”以及“城市”这三个子条件均不是修饰符搜索,则将直接从倒排表中获取与所述子条件符合的文档标识。
而当用户输入的内容为“中国旅?城市”时,拆分为“中国”、“旅?”以及“城市”这几个子条件,由于“中国”以及“城市”这两个子条件的搜索并不是修饰符搜索,则将直接从倒排表中获取与所述子条件符合的文档标识。但是由于“旅?”这一个子条件是采用修饰符搜索,则先遍历字典,找出与该子条件匹配的词条单元,此时,与旅相关的所有单词词组都将匹配到。
进一步地,在获得到与所述子条件匹配的所有词条单元时,进一步判断缓存中是否有与匹配到的词条单元对应的文档标识,如果缓存中有对应的文档标识,则直接从缓存中取出与词条单元匹配的文档标识。如果缓存中没有对应的文档标识,则从倒排表中获取该词条单元对应的文档标识。
本实施例中,在搜索过程中,将最终得到的搜索结果、搜索条件、搜索过程中匹配的词条单元以及词条单元对应的文档标识均进行缓存。通过上述对Lucene的缓存机制改进后可以大幅提高修饰符搜索的缓存命中率,减少大量磁盘IO交互带来的***资源耗费,从而有效提升Lucene修饰符搜索的性能。
需要说明的是,根据子条件之间的组合关系生成最终搜索结果是在所有子条件均进行搜索完毕之后发生,在所有子条件均进行搜索完毕之后,将子条件之间的组合关系集合子条件的搜索结果生成最终的搜索结果。
本实施例通过获取用户输入的目标内容;将所述目标内容拆分为一个或者多个子条件,对每个子条件进行搜索;当所述子条件搜索为修饰符搜索时,则找出所有与所述子条件匹配的词条单元;当缓存中存在与所述词条单元对应的文档标识时,则从缓存中取出与词条单元匹配的文档标识;将所有词条单元得到的文档标识作为所述子条件的搜索结果;根据子条件之间的组合关系生成最终搜索结果,并将所述最终搜索结果返回给用户。本发明实施例通过对Lucene缓存机制的改进,使得Lucene修饰符搜索的缓存命中率大幅提高,从而有效提升了Lucene修饰符搜索的性能。
进一步地,在一实施例中,所述提升修饰符搜索性能的程序被所述处理器执行时实现如下方法步骤:
以所述目标内容的完整内容在缓存中进行匹配;
若根据所述目标内容的完整内容直接匹配到相同内容,则直接从缓存中提取处匹配到的结果;
若根据所述目标内容的完整内容未匹配到相同内容,则进入将所述目标内容拆分为一个或者多个子条件的步骤。
本实施例中,在将所述目标内容拆分为多个子条件之前,直接以所述目标内容的完整内容进行检索,并直接在缓存中进行匹配。如直接在缓存中匹配“中国旅游城市”这一需要检索的完整内容,当缓存中匹配到了与该内容相同的结果,则直接从缓存中将该匹配结果匹配出来。
本实施例通过以所述目标内容的完整内容在缓存中进行匹配;若根据所述目标内容的完整内容直接匹配到相同内容,则直接从缓存中提取处匹配到的结果;若根据所述目标内容的完整内容未匹配到相同内容,则进入将所述目标内容拆分为一个或者多个子条件的步骤。通过本实施例直接对目标内容的完整内容进行检索,在此情况下,若能准确检索到与目标内容相同的内容,则能有效节省检索步骤,提高了检索效率。
进一步地,在一实施例中,所述提升修饰符搜索性能的程序被所述处理器执行时实现如下方法步骤:
在所述子条件搜索不是修饰符搜索时,从倒排表中获取与所述子条件符合的文档标识;
在所有子条件搜索完成后,进入根据子条件之间的组合关系生成最终搜索结果,并将所述最终搜索结果返回给用户的步骤。
本实施例中,以用户输入的目标内容为“中国旅游城市”为例进行说明。将“中国旅游城市”拆分为“中国”、“旅游”以及“城市”这几个子条件,在进一步判断这几个子条件是否为修饰符搜索。由于“中国”、“旅游”以及“城市”这三个子条件均不是修饰符搜索,则将直接从倒排表中获取与所述子条件符合的文档标识。并且在所有子条件都搜索完成后,根据子条件之间的组合关系生成最终搜索结果,并且将过程中的搜索条件以及搜索结果进行缓存,将最终搜索结果返回给客户。
本实施例通在所述子条件搜索不是修饰符搜索时,从倒排表中获取与所述子条件符合的文档标识;在所有子条件搜索完成后,进入根据子条件之间的组合关系生成最终搜索结果,并将所述最终搜索结果返回给用户的步骤。
进一步地,在其他实施例中,所述提升修饰符搜索性能的程序被所述处理器执行时实现如下方法步骤:
在缓存中不存在与词条单元匹配的文档标识时,则从倒排表中获取与该词条单元对应的文档标识;
将该词条单元与对应的文档标识进行缓存并进入根据子条件之间的组合关系生成最终搜索结果,并将所述最终搜索结果返回给用户的步骤。
本实施例中,在缓存中不存在与词条单元匹配的文档标识时,则进一步从倒排表中获取该词条单元对应的文档标识。并且将该词条单元与对应的文档标识一起缓存。
本实施例中,在缓存中不存在与词条单元匹配的文档标识时,则从倒排表中获取与该词条单元对应的文档标识;将该词条单元与对应的文档标识进行缓存并进入根据子条件之间的组合关系生成最终搜索结果,并将所述最终搜索结果返回给用户的步骤。
此外,本发明实施例还提出一种计算机可读存储介质,所述计算机可读存储介质上存储有提升修饰符搜索性能的程序,所述提升修饰符搜索性能的程序被处理器执行时实现如下操作:
获取用户输入的目标内容;
将所述目标内容拆分为一个或者多个子条件,对每个子条件进行搜索;
当所述子条件搜索为修饰符搜索时,则找出所有与所述子条件匹配的词条单元;
当缓存中存在与所述词条单元对应的文档标识时,则从缓存中取出与词条单元匹配的文档标识;
将所有词条单元得到的文档标识作为所述子条件的搜索结果;
根据子条件之间的组合关系生成最终搜索结果,并将所述最终搜索结果返回给用户。
进一步地,所述提升修饰符搜索性能的程序被处理器执行时实现如下操作:
以所述目标内容的完整内容在缓存中进行匹配;
若根据所述目标内容的完整内容直接匹配到相同内容,则直接从缓存中提取处匹配到的结果;
若根据所述目标内容的完整内容未匹配到相同内容,则进入将所述目标内容拆分为一个或者多个子条件的步骤。
进一步地,所述提升修饰符搜索性能的程序被处理器执行时实现如下操作:
在所述子条件搜索不是修饰符搜索时,从倒排表中获取与所述子条件符合的文档标识;
在所有子条件搜索完成后,进入根据子条件之间的组合关系生成最终搜索结果,并将所述最终搜索结果返回给用户的步骤。
进一步地,所述提升修饰符搜索性能的程序被处理器执行时实现如下操作:
在缓存中不存在与词条单元匹配的文档标识时,则从倒排表中获取与该词条单元对应的文档标识;
将该词条单元与对应的文档标识进行缓存并进入根据子条件之间的组合关系生成最终搜索结果,并将所述最终搜索结果返回给用户的步骤。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (6)
1.一种提升Apache Lucene修饰符搜索性能的方法,其特征在于,所述提升ApacheLucene修饰符搜索性能的方法包括如下步骤:
获取用户输入的目标内容;
将所述目标内容拆分为一个或者多个子条件,对每个子条件进行搜索;
当所述子条件搜索为修饰符搜索时,则找出所有与所述子条件匹配的词条单元;
当缓存中存在与所述词条单元对应的文档标识时,则从缓存中取出与词条单元匹配的文档标识;
将所有词条单元得到的文档标识作为所述子条件的搜索结果;
根据子条件之间的组合关系生成最终搜索结果,并将所述最终搜索结果返回给用户。
2.根据权利要求1所述的提升Apache Lucene修饰符搜索性能的方法,其特征在于,所述将所述目标内容拆分为一个或者多个子条件的步骤之前还包括:
以所述目标内容的完整内容为检索对象在缓存中进行匹配;
若根据所述目标内容的完整内容直接匹配到相同内容,则直接从缓存中提取处匹配到的结果,并进入将所述最终搜索结果返回给用户的步骤;
若根据所述目标内容的完整内容未匹配到相同内容,则进入将所述目标内容拆分为一个或者多个子条件的步骤。
3.根据权利要求1所述的提升Apache Lucene修饰符搜索性能的方法,其特征在于,所述将所述目标内容拆分为一个或者多个子条件,对每个子条件进行搜索的步骤之后还包括:
在所述子条件搜索不是修饰符搜索时,从倒排表中获取与所述子条件符合的文档标识;
在所有子条件搜索完成后,进入根据子条件之间的组合关系生成最终搜索结果,并进入将所述最终搜索结果返回给用户的步骤。
4.根据权利要求3所述的提升Apache Lucene修饰符搜索性能的方法,其特征在于,所述根据子条件之间的组合关系生成最终搜索结果的步骤之后还包括:
将得到的最终搜索结果以及搜索条件均进行缓存。
5.根据权利要求1所述的提升Apache Lucene修饰符搜索性能的方法,其特征在于,所述当所述子条件为修饰符搜索时,找出每个与所述子条件匹配的词条单元的步骤之后还包括:
在缓存中不存在与词条单元匹配的文档标识时,则从倒排表中获取与该词条单元对应的文档标识;
将该词条单元与对应的文档标识进行缓存并进入根据子条件之间的组合关系生成最终搜索结果,并进入将所述最终搜索结果返回给用户的步骤。
6.根据权利要求1~5任一项所述的提升Apache Lucene修饰符搜索性能的方法,其特征在于,所述文档标识是与所述词条单元唯一对应的文档标识。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810298335.4A CN108520051A (zh) | 2018-04-04 | 2018-04-04 | 一种提升Apache Lucene修饰符搜索性能的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810298335.4A CN108520051A (zh) | 2018-04-04 | 2018-04-04 | 一种提升Apache Lucene修饰符搜索性能的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108520051A true CN108520051A (zh) | 2018-09-11 |
Family
ID=63431459
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810298335.4A Pending CN108520051A (zh) | 2018-04-04 | 2018-04-04 | 一种提升Apache Lucene修饰符搜索性能的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108520051A (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101071442A (zh) * | 2007-06-26 | 2007-11-14 | 腾讯科技(深圳)有限公司 | 分布式索引文件的检索方法、检索***及检索服务器 |
CN102479207A (zh) * | 2010-11-29 | 2012-05-30 | 阿里巴巴集团控股有限公司 | 一种信息搜索的方法、***及信息搜索设备 |
CN102930054A (zh) * | 2012-11-19 | 2013-02-13 | 北京奇虎科技有限公司 | 数据搜索方法及*** |
CN104794228A (zh) * | 2015-04-30 | 2015-07-22 | 北京奇艺世纪科技有限公司 | 一种搜索结果提供方法及装置 |
-
2018
- 2018-04-04 CN CN201810298335.4A patent/CN108520051A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101071442A (zh) * | 2007-06-26 | 2007-11-14 | 腾讯科技(深圳)有限公司 | 分布式索引文件的检索方法、检索***及检索服务器 |
CN102479207A (zh) * | 2010-11-29 | 2012-05-30 | 阿里巴巴集团控股有限公司 | 一种信息搜索的方法、***及信息搜索设备 |
CN102930054A (zh) * | 2012-11-19 | 2013-02-13 | 北京奇虎科技有限公司 | 数据搜索方法及*** |
CN104794228A (zh) * | 2015-04-30 | 2015-07-22 | 北京奇艺世纪科技有限公司 | 一种搜索结果提供方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8316007B2 (en) | Automatically finding acronyms and synonyms in a corpus | |
US8271471B1 (en) | Anticipated query generation and processing in a search engine | |
US6785677B1 (en) | Method for execution of query to search strings of characters that match pattern with a target string utilizing bit vector | |
CN102227725B (zh) | 用于匹配实体的***和方法 | |
CN105981011B (zh) | 趋势响应管理 | |
CN108897842A (zh) | 计算机可读存储介质及计算机*** | |
JP2007034466A5 (zh) | ||
NO338518B1 (no) | Flerregisterbasert informasjonsgjenfinningssystem | |
JP2016533598A (ja) | ウェブサイト・トラフィック最適化の改善 | |
JP6355840B2 (ja) | ストップワード識別方法および装置 | |
US20080228750A1 (en) | "Query-log match" relevance features | |
US11573989B2 (en) | Corpus specific generative query completion assistant | |
CN106547828B (zh) | 一种基于神经网络的数据库缓存***及方法 | |
JP2022024102A (ja) | 検索モデルのトレーニング方法、目標対象の検索方法及びその装置 | |
CN103970748A (zh) | 一种相关关键词推荐方法和装置 | |
WO2007085187A1 (fr) | Procédé d'extraction de données, procédé de production de fichiers d'index et moteur de recherche | |
US20220129448A1 (en) | Intelligent dialogue method and apparatus, and storage medium | |
Elshater et al. | godiscovery: Web service discovery made efficient | |
US20190188647A1 (en) | Multiple element job classification | |
US20220358178A1 (en) | Data query method, electronic device, and storage medium | |
CN107229714B (zh) | 一种基于分布式数据库的全文搜索引擎 | |
CN111324607B (zh) | Sql语句复用方法和装置 | |
CN111984774A (zh) | 搜索方法、装置、设备以及存储介质 | |
JP2010257001A (ja) | 検索サポートキーワード提示装置、方法及びプログラム | |
CN103226601B (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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20180911 |
|
RJ01 | Rejection of invention patent application after publication |