Lucene排序算法的个性化改进

时间:2022-08-18 03:01:54

Lucene排序算法的个性化改进

【摘 要】Lucene为Java开源全文检索引擎,本文在Lucene现有的快速索引和基于全文索引的基础上,结合加权TF-IDF算法对Lucene现有排序算法进行个性化改进,改进后的Lucene排序模块能够更好的根据用户对不同信息的敏感度给出用户想要的结果,使得构建的全文检索与管理系统更贴近用户的实际需求。

【关键词】加权TF-IDF Lucene 排序算法;个性化改进

1、Lucene现有结果排序算法

Lucene现有结果排序算法计算公式为:

score=sum_t(tf_q*idf_t/nom_q+ft_q*idf_t/nom_d_t)

其中:score为文档的优先度得分,得分越高,优先级越高;sum_t为对用户给出的所有检索词进行计算合计值;tf_q为检索词t在用户输入检索语句中出现频率的平方根;idf_t的值为lognumDocs/docFreq_t+1+1.0,其中,numDocs为已经建立的索引中的文档d的总数;docFreq_t为包含检索词t的文档总数;nom_q为对于用户检索语句中包含的所有查询词,按公式(tf_q*idf_t)^2计算其合计值的平方根;tf_d为查询词t在文档d中出现频率的平方根;nom_d_t为文档d当中与查询词t相同域中的tokens总数的平方根。

在Lucene现有的结果排序算法中,查询词在文档中的位置显得并不重要,无论是出现在正文中还是标题中,只要出现了均只算出现频率增加一次;检索词在某一个文档中出现的次数越多,则该文档的优先度得分越高;检索到的文档中包含其他的词越多,那么这篇文档的得分也相对越少。

2、Lucene排序算法的个性化改进

Lucene现有的结果排序算法的不足是该算法中并没有体现特征词在文档中不同位置的不同重要程度,也不能根据查询词的重要程度不同来对结果进行排序,无法体现文档的相关性,因此,本文在Lucene原算法的基础上,结合检索特征词对用户不同的重要程度,对文档优先度排序算法进行了进一步改进,改进后文档优先度排序算法公式为

newscore=k1×score+k2×weight

其中:newscore为改进的文档优先度得分;score为原有排序算法计算得分,其计算公式为:

score=sum_t(tf_q*idf_t/nom_q+ft_q*idf_t/nom_d_t)

weight为对TF-IDF算法加权改进得到的对应特征词的权值,其计算公式为:

weight=i=1kwn×boosti×fi+j=1hfrj×kindj

其中weight为该特征词的权重;wn该经过权重奖励或者用户赋予的特征词的权值;k=2,位置种类包括标题、正文,boosti为不同位置的激励因子,fi为第i种位置上出现次数;fri为第i种相关信息的出现次数,kindj为基于相关信息的相关因子,相关信息如:用户实际业务往来的不同的用户,根据用户对公司业绩影响的大小,赋予不同的权重。系数k1、k2的值根据实际检索要求设置,其意义为:k1、k2的比值体现了用户可更改的特征词权重weight与Lucene基础排序算法得到的score值对检索结果的影响,从而使用户习惯对搜索结果的影响与基础排序算法相同,使得检索结果更贴近实际需求。

3、改进的Lucene排序算法理论验证

该改进在理论上便可证明对检索结果有优化作用,比如以下情形:假设一个检索词Q,用户初始赋予了其一定大小的w0值,出现在文档X的标题处,出现在文档Y内容的正文处,出现的频率ftitle=ftext,根据2.3.4.2中改进Lucene的结果排序算法公式计算,则文档X基于该检索词Q的最终计算得到的排序得分为:newscore(X)=k1×score(X)+k2×weightQ,其中weightQ=w0×boosttitle×ftitle,而文档Y基于该检索词Q的最终计算得到的排序得分为:newscore(Y)=k1×score(Y)+k2×weightQ,其中weightQ=w0×boosttext×ftext;而在原有的排序算法中score(X)=score(Y)。

由于在向用户显示检索结果时,有算法得到的文档页面优先度得分越高、其排名越靠前,而标题的激励因子boosttitle远远大于正文的激励因子boosttext,因此newscore(X)将大于newscore(Y),所以先显示给用户时,X文档的优先级要高于Y文档的优先级,这也能够体现出算法改进之处:改进后的算法更能考虑到用户的敏感度和文档的相关性,而原有的排序算法并没有考虑这些因素,在文档得分相同的情况下,也不能精确的体现用户对文档的关心程度,因此,算法改进后的检索结果将更精确地显示出用户需要的信息。同理,当把score的系数k1减小或者weight值的相关系数k2增大时,用户对搜索结果的影响也就加强了,用户根据其实际使用中对特征词权值wn的更改来使检索结果得到明显的改变,使其更能满足实际应用需求。

4、小结

本文结合加权TF-IDF算法对Lucene现有的结果排序算法提出改进,使其能更好的反应用户的实际需求,根据根据用户对不同的信息的敏感度给出不同结果,同时可以通过系数调节来改变用户对实际检索结果的影响力,从而也能够根据不同的用户进行检索的个性化调整,从而能够构建更满足用户需求的全文检索系统。

参考文献

[1]蔡峰.Lucene排序算法的研究和改进[J].中国新技术.2011,4:15-16

[2]赵珂,逯鹏.基于Lucene的搜索引擎设计与实现[J].计算机工程.2011,37(16):39-41

[3]冯宇.基于模糊层次分析法的Lucene网页排序算法研究[J].计算机与现代化.2011,1:124-126

上一篇:浅议电子支付安全协议及技术 下一篇:跳频通信抗干扰技术浅析