2009-11-09 2 views
3

Добрый день,Как применить сортировку по умолчанию в lucene на равных оценках?

Если у меня есть, например, документы, которые имеют следующие поля

Person_name - Birthday 
Jordan - 2009-06-15 
Marc - 2009-01-01 
Marcos - 2009-01-01 
Marcissh_something_something - 2009-06-15 
Marcos - 2009-12-31 

и на поиск PERSON_NAME: Marc * Я получил следующие результаты (баллы здесь гипотетические)

Person_name - Birthday - Score 
Jordan - 2009-06-15 - 0.0 
Marc - 2009-01-01 - 1.0 
Marcos - 2009-01-01 - 0.8 
Marcissh_something_something - 2009-06-15 - 0.1 
Marcos - 2009-12-31 - 0.8 

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

Person_name - Birthday - Score 
Marc - 2009-01-01 - 1.0 
Marcos - 2009-12-31 - 0.8 
Marcos - 2009-01-01 - 0.8 
Marcissh_something_something - 2009-06-15 - 0.1 

Благодаря

ответ

1

Я собирался рекомендовать ScoreDocComparator, но теперь вижу, что он устарел. Вы можете использовать FieldComparator. Вам необходимо создать TopFieldCollector и определить его Sort в соответствии с вашими пожеланиями. Я считаю, что это довольно новое, поскольку я не мог найти хороший пример.

+0

Поскольку я использую lucene 2.4.1, я, вероятно, займусь ScoreDocComparator ... но как его использовать? :-) –

+0

В этом случае, пожалуйста, см. Мой ответ на: http://stackoverflow.com/questions/8517/lucene-exact-ordering –

1

Попробуйте исследовать результаты поиска, а затем отсортировать те, с одинаковым счетом самостоятельно. Вы можете использовать компаратор для этого, который сравнивает оценку, а затем естественные поля результатов поиска.

Смежные вопросы