CN111061836B - 一种适用于Lucene全文检索引擎的自定义打分方法 - Google Patents

一种适用于Lucene全文检索引擎的自定义打分方法 Download PDF

Info

Publication number
CN111061836B
CN111061836B CN201911310990.8A CN201911310990A CN111061836B CN 111061836 B CN111061836 B CN 111061836B CN 201911310990 A CN201911310990 A CN 201911310990A CN 111061836 B CN111061836 B CN 111061836B
Authority
CN
China
Prior art keywords
search
clause
score
scoring
hit
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
CN201911310990.8A
Other languages
English (en)
Other versions
CN111061836A (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.)
Focus Technology Co Ltd
Original Assignee
Focus 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 Focus Technology Co Ltd filed Critical Focus Technology Co Ltd
Priority to CN201911310990.8A priority Critical patent/CN111061836B/zh
Publication of CN111061836A publication Critical patent/CN111061836A/zh
Application granted granted Critical
Publication of CN111061836B publication Critical patent/CN111061836B/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/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/33Querying
    • G06F16/3331Query processing
    • G06F16/334Query execution
    • G06F16/3341Query execution using boolean model

Landscapes

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

Abstract

本发明公开了一种适用于Lucene全文检索引擎的自定义打分方法,其特征在于,包括构建自定义的文档收集器、构建子句命中信息收集器、构建搜索子句组装插件、构建基于Long型数值的搜索打分插件等步骤,将实际的相似度排名需求映射到有限个布尔子句上,通过不同子句的命中情况以及本发明提出的一种基于Long型数值的搜索打分模型,将文档的最终相似度分值以高低位的形式映射在Long型数值上。通过本发明不仅可以设计出业务可扩展性强的搜索打分插件,而且插件输出的文档相似度分值具有较高的可读性和可解释性,给开发和调试工作带来了便利,总体上降低了基于Lucne全文检索引擎的自定义搜索打分和扩展的工作难度,提升领域内相关工作的效率。

Description

一种适用于Lucene全文检索引擎的自定义打分方法
技术领域
本发明涉及信息检索领域,特别是涉及一种适用于Lucene全文检索引擎的自定义打分方法。
背景技术
在全文检索领域,开源项目Apache Lucene作为业界的主流搜索引擎,为成千上万个项目提供了搜索服务支持。Lucene不仅在性能方面表现出色,在可扩展性方面也有很好的支持。不管是直接使用Lucene引擎还是使用基于Lucene引擎搭建的搜索引擎系统,都可以做到个性化的搜索定制。
作为全文检索的核心部分,文档相似度计算过程经常被不同的搜索业务干预和定制,根据业务的实际打分需要,返回自定义得分。虽然Lucene提供的默认相似度算法在文档相似度计算方面有很好的表现,但是结果分值可解释性差,也不能满足复杂的搜索场景需要,这时候就需要使用者根据业务特点进行定制,改变默认相似度打分,使用自定义打分。
一般的自定义打分方法主要集中在Scorer.score()步骤,根据业务规则和需要,返回一个符合业务要求的相似度分值,对于复杂的业务场景,位数能表达的搜索阶层不够,这时业务场景的子句命中得分只能以算术运算的方式进行叠加,这会带来几个问题:
1)算术运算叠加子句命中得分方式会遇到跨阶层的问题,会带来打分分值超出预期的情况。
2)在定义打分子句分值的时候,只能定义固定分值,遇到打分子句权重变化的时候,带来不小的调整成本。
3)返回一个无意义的相似度分值来表达最终的相似度得分不够直观。虽然Lucene提供了Explanation的方式来输出得分解释,但是对于某些自定义场景来说,有一定的维护成本。
发明内容
本发明所要解决的技术问题是克服现有技术的不足,提供一种适用于Lucene全文检索引擎的自定义打分方法。
为解决上述技术问题,本发明提供一种适用于Lucene全文检索引擎的自定义打分方法,其特征在于,在全文检索引擎Lucene下,所述Lucene具体为Apache Lucene release8.1.1版本,构建调用自定义搜索打分插件的文档收集器,用以获取和使用文档相似度计算的结果分值,即实现自定义打分,具体包括如下步骤:
步骤1,构建自定义的文档收集器,用于调用自定义搜索打分插件,基于SimpleCollector实现自定义命中文档收集器FSPTopScoreDocCollector,包含以下三个部分:
Lucene中的TopFieldCollector和TopScoreDocCollector根据是否需要指定非score field排序而进行选择,如果需要指定非score field排序,则使用TopFieldCollector,如果完全使用score进行排序,则选用TopScoreDocCollector;所述score field是指score字段,用于在Lucene全文检索引擎中存储相似度分值的字段,所述非score field是指非score字段,用户自定义的业务字段;
自定义Scorer,在Scorer中增加对自定义搜索打分插件的调用,即在自定义Scorer的score()方法中,调用自定义搜索打分插件的接口方法longScore(),其中,FSPTopScoreDocCollector与自定义搜索打分插件之间的关系是调用者和被调用者的关系;
自定义LongScoreEntry,用于设置并传递文档编号和自定义搜索打分插件输出的Long型相似度分值;
步骤2,构建子句命中信息收集器,用于统计子句命中情况,使用DisjunctionSumScorer来统计布尔OR查询子句的得分,基于DisjunctionSumScorer设计开发DisjunctionSumScorerWithClauseHit,并利用score()跟踪自定义的搜索子句的命中情况并加以收集,进而提供给自定义搜索打分插件进行相似度打分;其中DisjunctionSumScorerWithClauseHit的score()方法与步骤1中的自定义Socrer属于不同的用法,步骤S1中的Score中的score()是针对单个文档的相似度计算,DisjunctionSumScorer中的score()是针对布尔OR查询子句的命中得分的算术加总统计;
步骤3,构建搜索子句组装插件,用于将检索需求表达成布尔OR查询子句,并以顶层子句的形式进行封装,信息检索的过程分为匹配召回和打分两个阶段,对于匹配召回阶段,将检索需求转化为布尔OR查询子句;
步骤4,执行并输出打分分值,自定义搜索打分插件包含不止一套的打分逻辑以对应不同的业务规则,并输出文档对应的相似度得分,交给命中文档收集器进行进一步处理,最终返回符合要求的召回结果,所述文档的相似度分值是Long数值类型,用以将文档命中情况映射在相似度分值上。
所述步骤1中,自定义搜索打分插件的构建步骤如下:
步骤101:定义与queryfunction(k,t)对应的scorefunction(k,t),用于表达搜索打分模型,其中k为检索关键词,t为检索场景的类型,用于标识本次检索的场景类型;
步骤102:根据queryfunction(k,t)设计出不同类型的检索场景的子句得分规则,定义子句与阶层得分、阶层内权重排名的映射表:
搜索子句 阶层得分 阶层内权重排名
clause[c] layerScore[c] innerRank[c]
步骤103:根据步骤402子句与阶层得分、阶层内权重排名的映射表,计算每个子句的相似度得分score:score(k,t,c)=layerScore(k,t,c)*innerRank(k,t,c);其中c为搜索子句序号,layerScore为阶层得分,layerScore[i]=10^(i-1),i∈[1,19],innerRank[i]=i,i∈[1,9];
步骤104:对所有子句的相似度分值做算术求和:
Figure BDA0002324515780000031
其中k为检索关键词,t为检索的场景类型,c为query子句,n为query子句总数。
所述步骤2中,自定义子句命中收集器支持63个子句的命中信息收集,具体方法如下:
步骤201:构建一个位操作密钥clausesBits,用于位操作加密和解密,clausesBits中第i位存放的数据为:clausesBits[i]=clausesBits[i-1]<<1,其中i∈[1,63],特别clausesBits[0]=1;
步骤202:用一个Long类型数值clauseHitBits表达不止一个的子句命中信息,在DisjunctionSumScorer的score阶段进行位操作“或”处理,收集子句命中信息,
步骤203:利用位加密值和密钥数组,反向位操作“&”处理,解析出子句的命中情况,第i个子句命中结果为:inthitResult=clausesBits[i]&clauseHitBits,其中,hitResult=1表示命中,hitResult=0表示未命中。
所述步骤3中,搜索子句组装插件的导入步骤如下:
步骤301:结合Lucene index数据特点,将一组相似检索场景封装在一个queryfunction,定义function支持的检索场景类型,并设计不同检索场景的匹配和召回规则;
步骤302:定义queryfunction参数(k,t),其中k为检索关键词,t为检索的场景类型,用于标识本次检索的场景类型;
步骤303:根据检索关键词k和检索的场景类型t,构建对应的Lucene布尔OR查询子句,对于场景类型为t的检索的子句集合记作clause(k,t)[];
步骤304:将场景类型为t的检索的子句集合clause[k,t]组装成一个顶层布尔OR查询:Query(k,t)=(clause(k,t)[1])+OR+(clause(k,t)[2])+...+OR+(clause(k,t)[n])其中,n为搜索词k在场景类型为t的检索下的搜索子句的总数;
步骤305:调用LuceneIndexSearcher.search(Query,Collector)方法执行检索过程,其中Query为:布尔Or查询Query(k,t),Collector为自定义的文档收集器FSPTopScoreDocCollector。
本发明所达到的有益效果:
(1)本发明通过在Lucene原有打分流程的基础上,增加自定义文档收集器、自定义子句命中信息收集器、自定义搜索子句组装插件和自定义搜索打分插件,形成灵活的自定义打分架构。开发者基于本架构可以灵活定制搜索业务打分规则,将繁琐的自定义打分逻辑从整个搜索流程中解耦。有助于提升开发效率以及降低维护成本。
(2)本发明提出的自定义打分方法,支持将具体的搜索打分规则映射到具体的搜索子句命中信息上,即通过构建布尔OR查询子句并收集对应子句命中结果,来影响文档的相似度得分分值。此打分方法设计有助于在更精细的程度上控制文档得分,支持更复杂的自定义打分场景,提升了应对复杂搜索场景的干预能力。
(3)本发明通过扩展Lucene打分函数输出的相似度数值类型,增加Long型相似度分值类型。再结合本发明提出的基于Long型数值的搜索打分插件,可以以一种更有效的方式实现复杂搜索场景的自定义打分规则。基于数值高低位的分值标识设计,文档相似度分值兼具分值排序和分值解释两种效果。进一步提升开发效率和降低维护成本。
附图说明
图1为本发明的示例性实施例中的方法流程示意图;
图2为本发明的示例性实施例中的子句命中信息收集流程示意图;
图3为本发明的示例性实施例中的基于Long型数值的搜索打分插件示意图。
具体实施方式
下面结合附图和示例性实施例对本发明做进一步的解释:
如图1所示的一种适用于Lucene全文检索引擎的自定义打分方法,在全文检索引擎Lucene下,所述Lucene具体为Apache Lucene release 8.1.1版本,构建调用自定义打分插件的文档收集器,用以获取和使用文档相似度计算的结果分值,即实现自定义打分,具体包括如下步骤:
步骤S1,构建自定义的文档收集器,根据全文检索引擎Lucene(8.1.1)的设计,文档相似度计算的结果分值是由文档收集器进行获取和使用的,也就是说想要实现自定义打分,就需要构建一个可以调用自定义打分插件的文档收集器,本发明采用的是基于SimpleCollector的实现自定义命中文档收集器FSPTopScoreDocCollector,由于Lucene提供的已有收集器中没有可以支持收集自定义打分结果的收集器,本步骤定制的收集器增加了自定义打分插件的引用钩子,不仅可以利用自定义打分插件输出的分值,还扩充了long型打分类型,这些都是现有技术不具备的部分。包含以下三个部分:
Lucene中的TopFieldCollector和TopScoreDocCollector根据是否需要指定非score field排序而进行选择,如果需要指定非score field排序,则使用TopFieldCollector,如果完全使用score进行排序,则选用TopScoreDocCollector;所述score field是指score字段,用于在Lucene全文检索引擎中存储相似度分值的字段,所述非score field是指非score字段,用户自定义的业务字段;
自定义Scorer,为了在整个搜索流程中使用到自定义打分插件的输出结果,在Scorer中增加对自定义搜索打分插件的调用,即在自定义Scorer的score()方法中,调用自定义搜索打分插件的接口方法longScore()。需要说明的是FSPTopScoreDocCollector与搜索打分插件之间的关系是调用者和被调用者的关系,不是包含关系;
自定义LongScoreEntry,,用于设置并传递文档编号和自定义打分插件输出的Long型相似度分值,使得Long型数值的相似度得分可以在整个搜索流程中发挥作用;由于Lucene(8.1.1)只提供Float类型的相似度分值。从数值表达范围来说,Float可以满足绝大多数的相似度算法计算结果的表达,但是对于想利用数值高低位进行表达文档命中信息的场景时,Float数值的7位有效数字往往不能满足复杂搜索场景的自定义打分要求,因此在自定义打分插件中增加Long型数值的相似度分值支持,利用Long型数值长达19位的有效数值,可以充分表达复杂搜索命中信息;
更进一步的,本发明提出了一种更有效的算法模型来构建自定义搜索打分插件,不同搜索场景可以复用此算法模型,快速构建具体的搜索打分插件的逻辑代码,基于上述关系特征描述,想要实现搜索自定义打分,必须要构建搜索打分插件,搜索打分插件是被FSPTopScoreDocCollector在收集文档过程中调用的。
如图3所示,基于Long型数值的搜索打分插件来构建自定义搜索打分插件的具体步骤如下:
步骤101:定义与queryfunction(k,t)对应的score function(k,t),用于表达搜索打分模型,其中k为检索关键词,t为检索场景的类型,用于标识本次检索的场景类型;
步骤102:根据queryfunction(k,t)设计出不同类型的检索场景的子句得分规则,定义子句与阶层得分、阶层内权重排名的映射表,即子句命中得分对照表:
搜索子句 阶层得分 阶层内权重排名
clause[c] layerScore[c] innerRank[c]
步骤103:根据步骤402子句与阶层得分、阶层内权重排名的映射表,计算每个子句的相似度得分score:score(k,t,c)=layerScore(k,t,c)*innerRank(k,t,c);其中c为搜索子句序号,layerScore为阶层得分,layerScore[i]=10^(i-1),i∈[1,19]。innerRank[i]=i,i∈[1,9];
步骤104:对所有子句的相似度分值做算术求和:
Figure BDA0002324515780000061
其中k为检索关键词,t为检索的场景类型,c为query子句,n为query子句总数。
步骤S2,构建子句命中信息收集器,每一次搜索请求中的检索条件,在Lucene中都可以转化为具体的搜索子句,为了可以根据搜索子句命中情况来进行自定义打分,需要自定义子句命中信息收集器来精确统计子句命中情况,所述自定义子句命中收集器支持63个子句的命中信息收集。由于Lucene(8.1.1)是使用DisjunctionSumScorer来统计布尔OR查询子句的得分,本发明基于DisjunctionSumScorer设计开发了DisjunctionSumScorerWithClauseHit,并利用score()跟踪自定义的搜索子句的命中情况并加以收集,进而提供给自定义打分插件进行相似度打分。需要区别的是DisjunctionSumScorerWithClauseHit的score()方法与步骤S1中的自定义Socrer属于不同的用法,其中步骤S1中的Score中的score()是针对单个文档的相似度计算,而本步骤S2中提到的DisjunctionSumScorer中的score()是针对布尔OR查询子句的命中得分的算术加总统计。
如图2所示的处理过程,具体方法如下:
步骤201:构建一个位操作密钥位操作密钥clausesBits,用于位操作加密和解密,clausesBits中第i位存放的数据为:clausesBits[i]=clausesBits[i-1]<<1,其中i∈[1,63],特别clausesBits[0]=1;
步骤202:用一个Long类型数值clauseHitBits表达不止一个的子句命中信息,在DisjunctionSumScorer的score阶段进行位操作“或”处理,收集子句命中信息,
代码逻辑如下:
Figure BDA0002324515780000071
步骤203利用位加密值和密钥数组,可以反向位操作“&”处理,解析出子句的命中情况,第i个子句命中结果:
inthitResult=clausesBits[i]&clauseHitBits,hitResult=1表示命中,hitResult=0表示未命中。
步骤S3,构建搜索子句组装插件,用于将检索需求表达成布尔OR查询子句,并以顶层子句的形式进行封装,信息检索的过程分为匹配召回和打分两个阶段,对于匹配召回阶段,将检索需求转化为布尔OR查询子句,构建合适的布尔OR查询子句,并结合步骤2的子句命中信息收集器,就可以得到文档在本次检索条件下的命中情况;
所述步骤S3中,搜索子句组装插件的导入步骤如下:
步骤301:结合Lucene index数据特点,将一组相似检索场景封装在一个queryfunction,即图2中的Query子句组装插件,此插件是本发明抽象出来的一个查询组件,不在Lucene已有的查询处理流程中,每一个query function的实现,可以看成是一个具体业务场景的Query子句的集合。定义function支持的检索场景类型,并设计不同检索场景的匹配和召回规则;
步骤302:定义queryfunction参数(k,t),其中k为检索关键词,t为检索的场景类型,用于标识本次检索的场景类型;
步骤303:根据检索关键词k和检索的场景类型t,构建对应的Lucene布尔OR查询子句,对于场景类型为t的检索的子句集合记作clause(k,t)[];
步骤304:将场景类型为t的检索的子句集合clause[k,t]组装成一个顶层布尔OR查询:Query(k,t)=(clause(k,t)[1])+OR+(clause(k,t)[2])+...+OR+(clause(k,t)[n])其中,n为搜索词k在场景类型为t的检索下的搜索子句的总数;
步骤305:调用LuceneIndexSearcher.search(Query,Collector)方法执行检索过程,其中Query为:布尔Or查询Query(k,t),Collector为自定义的文档收集器FSPTopScoreDocCollector。
步骤S4,执行并输出打分分值,自定义搜索打分插件包含不止一套的打分逻辑以对应不同的业务规则,并输出文档对应的相似度得分,交给命中文档收集器进行进一步处理,最终返回符合要求的召回结果,所述文档的相似度分值是Long数值类型,用以将文档命中情况映射在相似度分值上。
(1)本发明通过在Lucene原有打分流程的基础上,增加自定义文档收集器、自定义子句命中信息收集器、自定义搜索子句组装插件和自定义搜索打分模型,形成灵活的自定义打分架构。开发者基于本架构可以灵活定制搜索业务打分规则,将繁琐的自定义打分逻辑从整个搜索流程中解耦。有助于提升开发效率以及降低维护成本。
(2)本发明提出的自定义打分方法,支持将具体的搜索打分规则映射到具体的搜索子句命中信息上,即通过构建布尔OR查询子句并收集对应子句命中结果,来影响文档的相似度得分分值。此打分方法设计有助于在更精细的程度上控制文档得分,支持更复杂的自定义打分场景,提升了应对复杂搜索场景的干预能力。
(3)本发明通过扩展Lucene打分函数输出的相似度数值类型,增加Long型相似度分值类型。再结合本发明提出的基于Long型数值的搜索打分模型,可以以一种更有效的方式实现复杂搜索场景的自定义打分规则。基于数值高低位的分值标识设计,文档相似度分值兼具分值排序和分值解释两种效果。进一步提升开发效率和降低维护成本。
以上实施例不以任何方式限定本发明,凡是对以上实施例以等效变换方式做出的其它改进与应用,都属于本发明的保护范围。

Claims (3)

1.一种适用于Lucene全文检索引擎的自定义打分方法,其特征在于:在全文检索引擎Lucene下,所述Lucene具体为Apache Lucene release 8.1.1版本,构建调用自定义搜索打分插件的文档收集器,用以获取和使用文档相似度计算的结果分值,即实现自定义打分,具体包括如下步骤:
步骤1,构建自定义的文档收集器,用于调用自定义搜索打分插件,基于SimpleCollector实现自定义命中文档收集器FSPTopScoreDocCollector,包含以下三个部分:
Lucene中的TopFieldCollector和TopScoreDocCollector根据是否需要指定非scorefield排序而进行选择,如果需要指定非score field排序,则使用TopFieldCollector,如果完全使用score进行排序,则选用TopScoreDocCollector;所述score field是指score字段,用于在Lucene全文检索引擎中存储相似度分值的字段,所述非score field是指非score字段,用户自定义的业务字段;
自定义Scorer,在Scorer中增加对自定义搜索打分插件的调用,即在自定义Scorer的score()方法中,调用自定义搜索打分插件的接口方法longScore(),其中,FSPTopScoreDocCollector与自定义搜索打分插件之间的关系是调用者和被调用者的关系;
自定义LongScoreEntry,用于设置并传递文档编号和自定义搜索打分插件输出的Long型相似度分值;
所述步骤1中,自定义搜索打分插件的构建步骤如下:
步骤101:定义与queryfunction(k,t)对应的scorefunction(k,t),用于表达搜索打分模型,其中k为检索关键词,t为检索场景的类型,用于标识本次检索的场景类型;
步骤102:根据queryfunction(k,t)设计出不同类型的检索场景的子句得分规则,定义子句与阶层得分、阶层内权重排名的映射表:
搜索子句 阶层得分 阶层内权重排名 clause[c] layerScore[c] innerRank[c]
步骤103:根据步骤402子句与阶层得分、阶层内权重排名的映射表,计算每个子句的相似度得分score:score(k,t,c)=layerScore(k,t,c)*innerRank(k,t,c);其中c为搜索子句序号,layerScore为阶层得分,layerScore[i]=10^(i-1),i∈[1,19],innerRank[i]=i,i∈[1,9];
步骤104:对所有子句的相似度分值做算术求和:
Figure FDA0003702979490000021
其中k为检索关键词,t为检索的场景类型,c为query子句,n为query子句总数;
步骤2,构建子句命中信息收集器,用于统计子句命中情况,使用DisjunctionSumScorer来统计布尔OR查询子句的得分,基于DisjunctionSumScorer设计开发DisjunctionSumScorerWithClauseHit,并利用score()跟踪自定义的搜索子句的命中情况并加以收集,进而提供给自定义搜索打分插件进行相似度打分;其中DisjunctionSumScorerWithClauseHit的score()方法与步骤1中的自定义Socrer属于不同的用法,步骤S1中的Score中的score()是针对单个文档的相似度计算,DisjunctionSumScorer中的score()是针对布尔OR查询子句的命中得分的算术加总统计;
步骤3,构建搜索子句组装插件,用于将检索需求表达成布尔OR查询子句,并以顶层子句的形式进行封装,信息检索的过程分为匹配召回和打分两个阶段,对于匹配召回阶段,将检索需求转化为布尔OR查询子句;
步骤4,执行并输出打分分值,自定义搜索打分插件包含不止一套的打分逻辑以对应不同的业务规则,并输出文档对应的相似度得分,交给命中文档收集器进行进一步处理,最终返回符合要求的召回结果,所述文档的相似度分值是Long数值类型,用以将文档命中情况映射在相似度分值上。
2.如权利要求1所述的一种适用于Lucene全文检索引擎的自定义打分方法,其特征在于:所述步骤2中,自定义子句命中收集器支持63个子句的命中信息收集,具体方法如下:
步骤201:构建一个位操作密钥clausesBits,用于位操作加密和解密,clausesBits中第i位存放的数据为:clausesBits[i]=clausesBits[i-1]<<1,其中i∈[1,63],特别clausesBits[0]=1;
步骤202:用一个Long类型数值clauseHitBits表达不止一个的子句命中信息,在DisjunctionSumScorer的score阶段进行位操作“或”处理,收集子句命中信息,
步骤203:利用位加密值和密钥数组,反向位操作“&”处理,解析出子句的命中情况,第i个子句命中结果为:inthitResult=clausesBits[i]&clauseHitBits,其中,hitResult=1表示命中,hitResult=0表示未命中。
3.如权利要求2所述的一种适用于Lucene全文检索引擎的自定义打分方法,其特征在于:所述步骤3中,搜索子句组装插件的导入步骤如下:
步骤301:结合Lucene index数据特点,将一组相似检索场景封装在一个queryfunction,定义function支持的检索场景类型,并设计不同检索场景的匹配和召回规则;
步骤302:定义queryfunction参数(k,t),其中k为检索关键词,t为检索的场景类型,用于标识本次检索的场景类型;
步骤303:根据检索关键词k和检索的场景类型t,构建对应的Lucene布尔OR查询子句,对于场景类型为t的检索的子句集合记作clause(k,t)[];
步骤304:将场景类型为t的检索的子句集合clause[k,t]组装成一个顶层布尔OR查询:Query(k,t)=(clause(k,t)[1])+OR+(clause(k,t)[2])+...+OR+(clause(k,t)[n])其中,n为搜索词k在场景类型为t的检索下的搜索子句的总数;
步骤305:调用LuceneIndexSearcher.search(Query,Collector)方法执行检索过程,其中Query为:布尔Or查询Query(k,t),Collector为自定义的文档收集器FSPTopScoreDocCollector。
CN201911310990.8A 2019-12-18 2019-12-18 一种适用于Lucene全文检索引擎的自定义打分方法 Active CN111061836B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911310990.8A CN111061836B (zh) 2019-12-18 2019-12-18 一种适用于Lucene全文检索引擎的自定义打分方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911310990.8A CN111061836B (zh) 2019-12-18 2019-12-18 一种适用于Lucene全文检索引擎的自定义打分方法

Publications (2)

Publication Number Publication Date
CN111061836A CN111061836A (zh) 2020-04-24
CN111061836B true CN111061836B (zh) 2022-07-22

Family

ID=70302413

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911310990.8A Active CN111061836B (zh) 2019-12-18 2019-12-18 一种适用于Lucene全文检索引擎的自定义打分方法

Country Status (1)

Country Link
CN (1) CN111061836B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113343046B (zh) * 2021-05-20 2023-08-25 成都美尔贝科技股份有限公司 一种智能搜索排序系统
CN114969310B (zh) * 2022-06-07 2024-04-05 南京云问网络技术有限公司 一种面向多维数据的分段式检索排序系统设计方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103123653A (zh) * 2013-03-15 2013-05-29 山东浪潮齐鲁软件产业股份有限公司 基于贝叶斯分类学习的搜索引擎检索排序方法
CN103455619A (zh) * 2013-09-12 2013-12-18 焦点科技股份有限公司 一种基于Lucene分片结构的打分处理方法及系统
CN106021430A (zh) * 2016-05-16 2016-10-12 武汉斗鱼网络科技有限公司 基于Lucence自定义词库的全文检索匹配方法及系统

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103123653A (zh) * 2013-03-15 2013-05-29 山东浪潮齐鲁软件产业股份有限公司 基于贝叶斯分类学习的搜索引擎检索排序方法
CN103455619A (zh) * 2013-09-12 2013-12-18 焦点科技股份有限公司 一种基于Lucene分片结构的打分处理方法及系统
CN106021430A (zh) * 2016-05-16 2016-10-12 武汉斗鱼网络科技有限公司 基于Lucence自定义词库的全文检索匹配方法及系统

Also Published As

Publication number Publication date
CN111061836A (zh) 2020-04-24

Similar Documents

Publication Publication Date Title
CN108292315B (zh) 储存和检索数据立方体中的数据
CN101978348B (zh) 管理关于近似串匹配的档案
US6353821B1 (en) Method and data processing system for detecting patterns in SQL to allow optimized use of multi-column indexes
US5845276A (en) Database link system
US7734645B2 (en) Computerized method, system and program product for generating a data mining model
CN1552032B (zh) 数据库
CA2388515C (en) System for managing rdbm fragmentations
US7548933B2 (en) System and method for exploiting semantic annotations in executing keyword queries over a collection of text documents
US7676453B2 (en) Partial query caching
CN111061836B (zh) 一种适用于Lucene全文检索引擎的自定义打分方法
CN108717470A (zh) 一种具有高准确度的代码片段推荐方法
WO2002044952A1 (en) Value-instance-connectivity-computer-implemented database
JP6355840B2 (ja) ストップワード識別方法および装置
CN115618113A (zh) 一种基于知识图谱表示学习的搜索召回方法和系统
CN103425727A (zh) 上下文语音查询扩大方法和系统
CN109902090A (zh) 字段名称获取方法和装置
US7676487B2 (en) Method and system for formatting and indexing data
JP5780036B2 (ja) 抽出プログラム、抽出方法及び抽出装置
CN117290376A (zh) 基于大语言模型的两阶段Text2SQL模型、方法与系统
CN110674142A (zh) 一种Oracle数据库索引优化方法
CN117390064B (zh) 一种基于可嵌入子图的数据库查询优化方法
WO2017076152A1 (en) Global filter factor estimation
CN117435614A (zh) 编码方法、响应时间预测方法及装置
CN117407985A (zh) 一种机械零部件三维cad模型检索结果互补性关联方法
CN116090413A (zh) 一种基于序列化的通用rdf数据压缩方法

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