Hi list,
I'm trying to get access to the float printed for queryWeight in
IndexSearcher.explain, but it appears to be different from other values I
get from Query.getNormalizedWeight() (and
IndexSearcher.createNormalizedWeight. ... )
Here are the debugging lines...
System.out.println("QUERY: "+q+" WEIGHT FROM QUERY: " + q.createWeight(
indexSearcher).getValueForNormalization() + " WEIGHT FROM SEARCHER: " +
indexSearcher.createNormalizedWeight(q).getValueForNormalization());
System.out.println(indexSearcher.explain(q, results.scoreDocs[i].doc));
... and a sample of what they produce.
QUERY: indexName:"number one" altnames:"number one" WEIGHT FROM QUERY:
1034.287 WEIGHT FROM SEARCHER: 1.0
5.8258076 = (MATCH) sum of:
5.8258076 = (MATCH) weight(indexName:"number one" in 11910)
[BinarySimilarity], result of:
5.8258076 = score(doc=11910,freq=1.0 = phraseFreq=1.0
), product of:
0.6019117 = queryWeight, product of:
19.357681 = idf(), sum of:
10.643795 = idf(docFreq=8, maxDocs=138832)
8.713885 = idf(docFreq=61, maxDocs=138832)
0.031094206 = queryNorm
I realize I'm getting different numbers because the queryNorm printed in
IndexSearcher.explain is not meant to be reused. However, for my use case,
it provides a good prediction of whether the query terms are all so
frequent in the corpus that I do not want their results.
Is there a way to access the IndexSearcher.explain version of queryWeight?
Thanks,
Liz