Используя Lucene при индексировании, я повышаю некоторые документы, но их оценка при поиске все еще 1 - PullRequest
2 голосов
/ 12 октября 2011

Я пытаюсь повысить определенные документы. Но они не получают повышение. Пожалуйста, скажите мне, что мне не хватает. Спасибо!

В моем кодовом индексе у меня есть:

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

затем в своем поисковом коде я извлекаю коллекцию документов из объекта ScoreDocs в коллекцию myDocuments и:

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

и я ставлю точку останова в предложении foreach, чтобы прерывать ее, если tempboost не равен 1. и точка останова никогда не срабатывает.

Что я пропустил?

Большое спасибо!

1 Ответ

4 голосов
/ 12 октября 2011

Из javadoc из Lucene (Java-версия, но применяется то же поведение):

public float getBoost ()

Возвращает, во время индексации, коэффициент усиления, установленный setBoost (float).

Обратите внимание, что после индексирования документа это значение больше не доступно из индекса.Во время поиска для извлеченных документов этот метод всегда возвращает 1. Это, однако, не означает, что значение повышения, установленное во время индексации, было проигнорировано - оно было просто объединено с другими факторами времени индексации и сохранено в другом месте для лучшей индексации иэффективность поиска.

...