興味プロファイルを 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)