0

興味プロファイルを Lucene クエリに変換しようとしていました。

次のような JSON 形式で、タイトル用語といくつかの拡張用語が与えられます。

{"title":"Donald Trump", "Expansion":[["republic","republican"],["democratic","democrat"],["campaign"]]}

対応する Lucene クエリは、次のような BooleanQuery にすることができます (タイトル ターム ブースト ファクターを 3.0 に設定し、拡張ターム ブースト ファクターを 1.0 に設定します)。

+(text:donald^3.0 text:trump^3.0 (text:democrat text:democratic) (text:republic text:republican) text:campaign)

IndexSearcher's explain()メソッドを使用して、

次のような一致するドキュメント

I know people just want to find a way to be famous without taking any risks, republic republican Donald Trump Campaign.

スコアは 9.0 です

3.0 = weight(text:donald^3.0 in 0) [TitleExpansionSimilarity], result of:
    3.0 = score(doc=0,freq=1.0), product of:
      3.0 = queryWeight, product of:
        3.0 = boost
        1.0 = idf(docFreq=201, maxDocs=201)
        1.0 = queryNorm
      1.0 = fieldWeight in 0, product of:
        1.0 = tf(freq=1.0), with freq of:
          1.0 = termFreq=1.0
        1.0 = idf(docFreq=201, maxDocs=201)
        1.0 = fieldNorm(doc=0)
  3.0 = weight(text:trump^3.0 in 0) [TitleExpansionSimilarity], result of:
    3.0 = score(doc=0,freq=1.0), product of:
      3.0 = queryWeight, product of:
        3.0 = boost
        1.0 = idf(docFreq=201, maxDocs=201)
        1.0 = queryNorm
      1.0 = fieldWeight in 0, product of:
        1.0 = tf(freq=1.0), with freq of:
          1.0 = termFreq=1.0
        1.0 = idf(docFreq=201, maxDocs=201)
        1.0 = fieldNorm(doc=0)
  2.0 = sum of:
    1.0 = weight(text:republic in 0) [TitleExpansionSimilarity], result of:
      1.0 = fieldWeight in 0, product of:
        1.0 = tf(freq=1.0), with freq of:
          1.0 = termFreq=1.0
        1.0 = idf(docFreq=201, maxDocs=201)
        1.0 = fieldNorm(doc=0)
    1.0 = weight(text:republican in 0) [TitleExpansionSimilarity], result of:
      1.0 = fieldWeight in 0, product of:
        1.0 = tf(freq=1.0), with freq of:
          1.0 = termFreq=1.0
        1.0 = idf(docFreq=201, maxDocs=201)
        1.0 = fieldNorm(doc=0)
  1.0 = weight(text:campaign in 0) [TitleExpansionSimilarity], result of:
    1.0 = fieldWeight in 0, product of:
      1.0 = tf(freq=1.0), with freq of:
        1.0 = termFreq=1.0
      1.0 = idf(docFreq=201, maxDocs=201)
      1.0 = fieldNorm(doc=0)

BooleanQuery (text:republic text:republican) 別名をスコアリングするために、Lucene スコアリング関数を書き直す方法はありますか。["republic","republican"]"republic" の一致する重みまたは "republican" の一致する重みのいずれかの最大値としてクラスタ化しますか?

1.0 = MAX(instead of sum) of:
    1.0 = weight(text:republic in 0) [TitleExpansionSimilarity], result of:
      1.0 = fieldWeight in 0, product of:
        1.0 = tf(freq=1.0), with freq of:
          1.0 = termFreq=1.0
        1.0 = idf(docFreq=201, maxDocs=201)
        1.0 = fieldNorm(doc=0)
    1.0 = weight(text:republican in 0) [TitleExpansionSimilarity], result of:
      1.0 = fieldWeight in 0, product of:
        1.0 = tf(freq=1.0), with freq of:
          1.0 = termFreq=1.0
        1.0 = idf(docFreq=201, maxDocs=201)
        1.0 = fieldNorm(doc=0)
4

1 に答える 1