开发者

Using Lucene when indexing I boost certain documents, but their score at search is still 1

I am trying to boost certain document开发者_JAVA技巧s. But they dont get boosted. Please tell me what I am missing. Thanks!

In my index code I have:

if (myCondition)  
{
   myDocument.SetBoost(1.1f);
}
myIndexWriter.AddDocument(document);

then in my search code I retrieve the collection of documents from the ScoreDocs object into myDocuments collection and:

    foreach (Lucene.Net.Documents.Document doc in myDocuments)
    {
        float tempboost = doc.GetBoost();
    }

and I place a breakpoint in the foreach clause to break if the tempboost is not 1. and the breakpoint is never hit.

What did I miss?

Many thanks!


From javadoc of Lucene (Java version but same behaviors apply):

public float getBoost()

Returns, at indexing time, the boost factor as set by setBoost(float).

Note that once a document is indexed this value is no longer available from the index. At search time, for retrieved documents, this method always returns 1. This however does not mean that the boost value set at indexing time was ignored - it was just combined with other indexing time factors and stored elsewhere, for better indexing and search performance.

note: for those of you who get NaN when retrieving the score please use the following line

searcher.SetDefaultFieldSortScoring(true,true);

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜