2011-01-30 3 views

ответ

3

Lucene имеет функциональные возможности сортировки (который по умолчанию релевантности).

Поиск в спящем режиме предоставляет эту функциональность (FullTextQuery.sort). если вы не хотите поведения по умолчанию, вы можете передать свой собственный объект сортировки.

Sort sort = new Sort(new SortField("name")); 
searchQuery.setSort(sort); 
List results = searchQuery.list(); 

В вашем случае сортировка по умолчанию должна быть достаточной.

+0

Thanks, doc_189 !! – Noor

2

По умолчанию Hibernate Search будет сортировать результаты в зависимости от релевантности результатов (как указано в doc_180), определенных по умолчанию для выполнения оценки Lucene.

Однако, если вас не устраивает способ его ранжирования (например, вы можете захотеть, чтобы сущности People были ранжированы выше всех других индексированных объектов, которые у вас есть), тогда вы можете сделать один из двух вещи:

  1. Применить динамический или статический коэффициент значимости для субъектов, которые должны быть рассмотрены более релевантными (см документации по аннотациям @Boost и @DynamicBoost), или
  2. Вы можете написать свою собственную реализацию пользовательского скоринга путем расширения org.apache.lucene.search.Similarity (см. Hibernate Search Advanced Features). Фактор повышения, упомянутый в пункте 1, является одним из факторов этого общего алгоритма подсчета.