Оценка документа, влияющая на порядок сортировки результатов, Lucene - PullRequest
3 голосов
/ 24 февраля 2010

Даже после прохождения поля сортировки оценка документа влияет на порядок сортировки результатов поиска. Есть ли способ заставить lucene игнорировать счет документа, когда передается определенное поле сортировки?

Например:

DocId    Score        SortFieldA        SortFieldB
  1      23.0041      200906030800      Test
  2      32.2774      200906020800      Test
  3      21.0632      200906030800      Apple

Я хочу, чтобы результаты сортировались сначала по SortFieldA, а затем по SortFieldB. Таким образом, в приведенном выше случае результаты должны быть возвращены как doc2, doc3 и doc1. Но из-за счета порядок сортировки нарушается.

Я заметил, что результаты сортируются правильно, если документы имеют одинаковую оценку.

Код, который устанавливает поля сортировки:

public override Sort GetSort()
    {
      List<SortField> sortFields = new List<SortField>();      
      sortFields.Add(new SortField(StartDateTime.ToString(), SortField.STRING, ReverseSort));
      sortFields.Add(new SortField(TitleSort.ToString(), SortField.STRING, ReverseSort));
      return new Sort(sortFields.ToArray());
    }

1 Ответ

0 голосов
/ 25 февраля 2010

Редактировать: поскольку вам не важен исходный счет, я считаю, что вам нужно использовать ConstantScoreQuery , чтобы сначала получить хиты, а затем передать их сортировщику.

Попробуйте посмотреть на этот вопрос .

...