1

研究論文のインデックスを作成しています。各論文には、タイトル、著者、要約テキスト、出版年、参考文献の記事の ID などのフィールドがあります。引用に基づくいくつかのクエリを効率的に組み合わせる必要があります。記事間のリンク。

編集:典型的な例では、次のような記事を探しているかもしれません:

+(title:preterm abstract:preterm)

でも、何度も引用されている記事を後押ししたい。したがって、記事ごとAに、 のようなクエリで記事を引用しているすべての記事を収集し、に追加する新しいフィールドでその+bibliography:Aような記事の数をインデックス化できます。次に、FunctionQuery、IntFieldSource、および BoostedQuery を使用してクエリに引用カウント ブーストを追加し、次のようにします。citationCountA

+(title:preterm abstract:preterm)
+boost(int(citationCount), const(0.1))

また、記事を引用する記事で使用されている用語に基づいて記事を宣伝したいと考えています。したがって、上記のように、Aのようなクエリで引用するすべての記事を収集し、bibliography:Aすべてのタイトルと要約用語を新しいものとしてインデックス化し、に追加さcitingTitlescitingAbstractsたフィールドにすることができAます。次に、次のようなクエリを作成することで、引用用語に基づいてクエリをブーストできます。

+(title:preterm abstract:preterm)
+boost((citingTitles:preterm citingAbstracts:preterm), const(0.5))

年の制限が必要になるまで、これはすべて正常に機能します。たとえば、1990 年より前に発生した引用に基づいてクエリをブーストするだけでよい場合があります。基本的には、次のようなものが必要です。

+(title:preterm abstract:preterm)
+boost(int(citationCountBefore1990), const(0.1))
+boost((citingTitlesBefore1990:preterm citingAbstractsBefore1990:preterm), const(0.5))

しかし、文字通りこのアプローチに従って各XXXBeforeXXXフィールドを作成すると (たとえば、 のようなクエリを使用して) 、+bibliography:A +year:[* TO XXX]膨大な重複が必要になります。citingAbstractsBeforeXXXcitingAbstractsBeforeXXX+1citingAbstractsBeforeXXX+2

この重複を回避しながら、クエリを高速に保つにはどうすればよいですか?

編集:おそらく、クエリ時間結合でこれを行う方法がありますか? この問題は少し結合のように感じますが、それがどのように機能するかはすぐにはわかりません。

4

1 に答える 1

0

「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

次に、1996 年より前の記事 1 を引用している記事を照会するには、次のように照会します。

bibliography:article_1 AND creation_date:[* TO 1996]

これは返さid:article_2れ、高価であってはなりません。

于 2012-10-27T17:56:22.020 に答える