1

私はLucene.Netこのようなクエリを使用しています

(PropertyID:1 OR PropertyID:25 OR PropertyID:5 OR PropertyID:10 OR PropertyID:15)

Lucene.Netの順番で結果が欲しいですPropertyId。たとえば、最初のレコードはPropertyId25 の場合は 1 秒、5 の場合は 3 番目のレコードにする必要があります。ただし、現在、Lucene.Net結果セットを別の方法で配置しています。

4

1 に答える 1

0

クエリ内のフィールドの順序は、並べ替えには影響しません。

あなたが探しているソートを達成するための2つの方法があります:

  1. クエリでブーストを使用します。PropertyID:1を他の部分よりも高くして、これらの一致のスコアが高くなり、結果の最初に表示され、次にPropertyID:2のスコアが2番目に高くなるようにすることができます。例: (PropertyID:1^5 OR PropertyID:25^4 OR PropertyID:5^3 OR PropertyID:10^2 OR PropertyID:15)これは実装が簡単ですが、次の場合は正しく機能しない可能性があります。他の基準がスコアリングに影響するため、クエリに他の基準を含めています。

  2. 独自のComparatorクラスを介してカスタムソートを実装します。これを行うためのリソースがWeb上に不足していることを考えると、これにはかなりの作業が必要になる場合がありますが、並べ替えを最大限に制御できます。これは、文字列値をアルファベット順に並べ替えるために使用されるカスタムコンパレータの例です。これは、開始するのに適した場所です。

于 2013-02-15T18:33:29.500 に答える