[ 
https://issues.apache.org/jira/browse/LUCENE-1543?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12675570#action_12675570
 ] 

Michael McCandless commented on LUCENE-1543:
--------------------------------------------


It seems like this is quite similar to function queries, which also
match all docs but then let you to set your own score for each doc (eg
based on values from FieldCache).

Once we create column-stride fields, and merge norms into it, then
presumably MatchAllDocsQuery & function queries would simply be the
same thing.

bq. I've been considering adding a new "norms" field at document level for a 
couple of years now. 8 more bits at document level would allow for moving 
general document boosting to move it out the norms-boost-per-field-blob and 
increase the length normalization and per field boost resolution quite a bit at 
a low cost.

This seems interesting -- it would double the precision for boosting,
but would require the equivalent of one more field's norms enabled of
RAM storage (ie a byte[] of length maxDoc()).  Also, it would slow
down scoring to have to lookup & multiply in doc's contributation, and
the field's.  I don't have a good sense of how often the added
precision is helpful though.  Karl have you tested that?  EG using
function queries you could easily emulate "per-document norms".


> Field specified norms in MatchAllDocumentsScorer 
> -------------------------------------------------
>
>                 Key: LUCENE-1543
>                 URL: https://issues.apache.org/jira/browse/LUCENE-1543
>             Project: Lucene - Java
>          Issue Type: Improvement
>          Components: Query/Scoring
>    Affects Versions: 2.4
>            Reporter: Karl Wettin
>            Priority: Minor
>             Fix For: 2.9
>
>         Attachments: LUCENE-1543.txt
>
>
> This patch allows for optionally setting a field to use for norms factoring 
> when scoring a MatchingAllDocumentsQuery.
> From the test case:
> {code:java}
> .
>     RAMDirectory dir = new RAMDirectory();
>     IndexWriter iw = new IndexWriter(dir, new StandardAnalyzer(), true, 
> IndexWriter.MaxFieldLength.LIMITED);
>     iw.setMaxBufferedDocs(2);  // force multi-segment
>     addDoc("one", iw, 1f);
>     addDoc("two", iw, 20f);
>     addDoc("three four", iw, 300f);
>     iw.close();
>     IndexReader ir = IndexReader.open(dir);
>     IndexSearcher is = new IndexSearcher(ir);
>     ScoreDoc[] hits;
>     // assert with norms scoring turned off
>     hits = is.search(new MatchAllDocsQuery(), null, 1000).scoreDocs;
>     assertEquals(3, hits.length);
>     assertEquals("one", ir.document(hits[0].doc).get("key"));
>     assertEquals("two", ir.document(hits[1].doc).get("key"));
>     assertEquals("three four", ir.document(hits[2].doc).get("key"));
>     // assert with norms scoring turned on
>     MatchAllDocsQuery normsQuery = new MatchAllDocsQuery("key");
>     assertEquals(3, hits.length);
> //    is.explain(normsQuery, hits[0].doc);
>     hits = is.search(normsQuery, null, 1000).scoreDocs;
>     assertEquals("three four", ir.document(hits[0].doc).get("key"));    
>     assertEquals("two", ir.document(hits[1].doc).get("key"));
>     assertEquals("one", ir.document(hits[2].doc).get("key"));
> {code}

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: java-dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: java-dev-h...@lucene.apache.org

Reply via email to