基于引文和年份的高效Lucene索引

基于引文和年份的高效Lucene索引,lucene,Lucene,我正在建立一个研究文章索引,每个索引都有诸如标题、作者、摘要文本、出版年份、参考书目中文章的ID等字段。我需要有效地结合一些基于文章之间引用链接的查询 编辑:在一个典型的例子中,我可能在寻找包含以下内容的文章: +(title:preterm abstract:preterm) 但我想为那些被引用过很多次的文章添砖加瓦。因此,对于每一篇文章A,我都可以通过类似+书目:A这样的查询收集引用文章的所有文章,然后在我添加到A的新引文计数字段中索引此类文章的数量。然后,我可以使用FunctionQue

我正在建立一个研究文章索引,每个索引都有诸如标题、作者、摘要文本、出版年份、参考书目中文章的ID等字段。我需要有效地结合一些基于文章之间引用链接的查询

编辑:在一个典型的例子中,我可能在寻找包含以下内容的文章:

+(title:preterm abstract:preterm)
但我想为那些被引用过很多次的文章添砖加瓦。因此,对于每一篇文章
A
,我都可以通过类似
+书目:A
这样的查询收集引用文章的所有文章,然后在我添加到
A
的新
引文计数
字段中索引此类文章的数量。然后,我可以使用FunctionQuery、IntFieldSource和BoostedQuery向查询添加引文计数提升,以获得如下结果:

+(title:preterm abstract:preterm)
+boost(int(citationCount), const(0.1))
+(title:preterm abstract:preterm)
+boost(int(citationCountBefore1990), const(0.1))
+boost((citingTitlesBefore1990:preterm citingAbstractsBefore1990:preterm), const(0.5))
我还想根据引用它的文章中使用的术语来改进一篇文章。因此,如上所述,我可以通过像
书目:A
这样的查询来收集引用
A
的所有文章,然后将它们的所有标题和抽象术语索引为新的
citingTitles
citingAbstracts
字段,这些字段添加到
A
。然后,我可以通过创建如下查询来增强基于引用术语的查询:

+(title:preterm abstract:preterm)
+boost((citingTitles:preterm citingAbstracts:preterm), const(0.5))
这一切都很好,直到我需要一年的限制。例如,我可能只需要根据1990年之前发生的引用来增强查询。基本上我需要这样的东西:

+(title:preterm abstract:preterm)
+boost(int(citationCount), const(0.1))
+(title:preterm abstract:preterm)
+boost(int(citationCountBefore1990), const(0.1))
+boost((citingTitlesBefore1990:preterm citingAbstractsBefore1990:preterm), const(0.5))
但按照这种方法,创建每个
XXXBeforeXXX
字段(例如,使用
+参考书目:A+年份:[*TO XXX]
)将需要大量复制-例如,引用文章的摘要中的所有术语将在
citingAbstractsBeforeXXX
中重复,
citingAbstractsBeforeXXX+1
citingAbstractsBeforeXXX+2

如何避免这种重复,但仍然保持快速查询

编辑:也许有什么方法可以用一个?这个问题感觉有点像join,但我不知道它会如何工作。

我不确定“将用户术语查询与引用2003年之前文章a的所有文章的摘要进行比较”是什么意思,但对于日期(第一个示例),我会做以下操作(伪代码):

示例文件:

id:article_1
creation_date:1990
bibliography:<none>

id:article_2
creation_date:1991
bibliography:article_1

id:article_3
creation_date:2000
bibliography:article_1,article_2

这将返回
id:article_2
,而且不会很贵。

很抱歉没有更清楚地说明我的问题。我已经用上面的查询风格重写了这个问题,以显示我正在尝试做什么。基本上,还有一个间接层次-我需要在另一个查询中使用像
参考书目:article\u 1和creation\u date:[*到1996]
这样的查询结果作为一个促进因素。