3

データベースからの検索結果を取得した後、休止状態の検索で最適な一致に従って結果を並べ替えることは可能ですか?

4

2 に答える 2

3

Luceneにはソート機能があります(デフォルトでは関連性があります)。

休止状態の検索では、この機能(FullTextQuery.sort)が公開されます。デフォルトの動作が必要ない場合は、独自のソートオブジェクトを渡すことができます。

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

あなたの場合、デフォルトのソートで十分です。

于 2011-01-30T06:14:17.147 に答える
2

デフォルトでは、Hibernate Searchは、デフォルトのLuceneスコアリング実装によって決定された結果の関連性(前述のdoc_180)に基づいて結果をソートします。

ただし、ランク付けの方法に満足できない場合(たとえば、Peopleエンティティを他のすべてのインデックス付きエンティティよりも高くランク付けする場合など)、次の2つのいずれかを実行できます。

  1. より関連性が高いと見なされるエンティティに動的または静的ブースト係数を適用する(@Boostおよび@DynamicBoostアノテーションのドキュメントを参照)、または
  2. org.apache.lucene.search.Similarityを拡張することで、独自のカスタムスコアリング実装を作成できます(Hibernate Searchの高度な機能を参照)。ポイント1で述べたブースト係数は、この全体的なスコアリングアルゴリズムの1つの要素にすぎません。
于 2011-02-10T03:29:10.343 に答える