4

TermQuery を使用して LongField と正確に一致させるにはどうすればよいですか?

4

2 に答える 2

6

NumericUtils APIの警告を考慮してください

注: この API は社内専用であり、次のリリースでは互換性のない方法で変更される可能性があります。

NumericUtils API が実際にバージョン 3.6からバージョン 4.0に大幅に変更されたため、これが一部の人々にとって問題になっていることに気付きました。直接使用することは避けることをお勧めします。

代わりに、NumericRangeQueryを使用して数値を検索してください。最大範囲と最小範囲を同じ値に設定すると、正確な一致が得られます。

また、どのフィールドを数値にするかを意図的に選択することも役立つ場合があります。NumericFields は、数値範囲のクエリと並べ替えができるように設計されています。数値として使用して検索する必要がない場合は、おそらく NumericField ではないはずです。たとえば、識別番号は通常、数字ではなくキーワードにする必要があります。

于 2013-01-04T17:38:35.553 に答える
1
BytesRef ref = new BytesRef();    
NumericUtils.longToPrefixCoded( 12L, 0, ref );
Query q = new TermQuery( new Term( fieldname, ref ) );
于 2013-01-04T13:56:24.550 に答える