FAQ
Hi,

our application enables sorting the result lists according to field values,
currently all represented as Strings (we plan to also migrate to the new
numeric type capabilities of Lucene 2.9 at a later time)

For this, the documents will be sorted e.g. according to the author, which
works fine with the new 2.9 sort interface


llSortFields.add(new SortField(strFieldName4Sorting, SortField.STRING, !bAscending));

topDocs = searcher.search(wheight4Query, (Filter) null, m_iMaxTopDocs, new Sort(llSortFields.toArray(new SortField[0])));

for (ScoreDoc scoreDoc : m_luceneTopDocs.scoreDocs)
System.out.println(scoreDoc.score); //>>>>>> NaN


Nevertheless, we visualize the score of each document inside a birdeye view, to show the relevancy of each doc according to
the users query. But the scoreDoc.score numbers have all the value 'NaN'.

This is a new behaviour in Lucene 2.9, I think a good feature to save cpu time - but how can we get the scores again?


regards


Chris

Search Discussions

  • Uwe Schindler at Oct 15, 2009 at 4:53 pm
    The default API searcher.search works like this now. If you want to control,
    the retrieval of scores, create a TopFieldCollector directly:
    http://lucene.apache.org/java/2_9_0/api/all/org/apache/lucene/search/TopFiel
    dCollector.html

    The static create methods has many possibilities to control the behaviour of
    the resulting Collector. Pass this collector to the corresponding search
    engine. The topDocs() method returns the resulting TopDocs instance (its in
    the superclass TopDocsCollector!!!). Some hints: mostly scoreDocsInOrder can
    be false, if you need the maxScore set it true, you want to have scores, so
    set also to true. Mosly you will not need the sorted field values (false).

    Uwe

    -----
    Uwe Schindler
    H.-H.-Meier-Allee 63, D-28213 Bremen
    http://www.thetaphi.de
    eMail: uwe@thetaphi.de
    -----Original Message-----
    From: Christian Reuschling
    Sent: Thursday, October 15, 2009 6:42 PM
    To: java-user@lucene.apache.org
    Subject: How to sort and get document scores afterwards

    Hi,

    our application enables sorting the result lists according to field
    values,
    currently all represented as Strings (we plan to also migrate to the new
    numeric type capabilities of Lucene 2.9 at a later time)

    For this, the documents will be sorted e.g. according to the author, which
    works fine with the new 2.9 sort interface


    llSortFields.add(new SortField(strFieldName4Sorting, SortField.STRING,
    !bAscending));

    topDocs = searcher.search(wheight4Query, (Filter) null, m_iMaxTopDocs, new
    Sort(llSortFields.toArray(new SortField[0])));

    for (ScoreDoc scoreDoc : m_luceneTopDocs.scoreDocs)
    System.out.println(scoreDoc.score); //>>>>>> NaN


    Nevertheless, we visualize the score of each document inside a birdeye
    view, to show the relevancy of each doc according to
    the users query. But the scoreDoc.score numbers have all the value 'NaN'.

    This is a new behaviour in Lucene 2.9, I think a good feature to save cpu
    time - but how can we get the scores again?


    regards


    Chris


    ---------------------------------------------------------------------
    To unsubscribe, e-mail: java-user-unsubscribe@lucene.apache.org
    For additional commands, e-mail: java-user-help@lucene.apache.org
  • Michael McCandless at Oct 15, 2009 at 4:56 pm
    Yeah this was a change in 2.9... but you can get the scores back, if
    you do this:

    TopFieldCollector tfc = TopFieldCollector.create(sort, numHits,
    fillFields,
    true /*
    trackDocScores */,
    true /* trackMaxScore */,
    false /* docsInOrder */);
    searcher.search(query, tfc);
    TopDocs results = tfc.topDocs();

    Mike

    On Thu, Oct 15, 2009 at 12:41 PM, Christian Reuschling
    wrote:
    Hi,

    our application enables sorting the result lists according to field values,
    currently all represented as Strings (we plan to also migrate to the new
    numeric type capabilities of Lucene 2.9 at a later time)

    For this, the documents will be sorted e.g. according to the author, which
    works fine with the new 2.9 sort interface


    llSortFields.add(new SortField(strFieldName4Sorting, SortField.STRING, !bAscending));

    topDocs = searcher.search(wheight4Query, (Filter) null, m_iMaxTopDocs, new Sort(llSortFields.toArray(new SortField[0])));

    for (ScoreDoc scoreDoc : m_luceneTopDocs.scoreDocs)
    System.out.println(scoreDoc.score);  //>>>>>> NaN


    Nevertheless, we visualize the score of each document inside a birdeye view, to show the relevancy of each doc according to
    the users query. But the scoreDoc.score  numbers have all the value 'NaN'.

    This is a new behaviour in Lucene 2.9, I think a good feature to save cpu time - but how can we get the scores again?


    regards


    Chris
    ---------------------------------------------------------------------
    To unsubscribe, e-mail: java-user-unsubscribe@lucene.apache.org
    For additional commands, e-mail: java-user-help@lucene.apache.org

Related Discussions

Discussion Navigation
viewthread | post
Discussion Overview
groupjava-user @
categorieslucene
postedOct 15, '09 at 4:42p
activeOct 15, '09 at 4:56p
posts3
users3
websitelucene.apache.org

People

Translate

site design / logo © 2022 Grokbase