2016-08-17 25 views
0

いくつかのフィールドに適切な方法では動作しません。それは数値を格納するように、両方のフィールドのSolrの範囲クエリは、私はSolrの文書に</strong> & <strong>nofyears_1</strong> weight_value 2つのフィールド<strong>を追加した

スキーマは

<field name="weight_value" type="string" indexed="true" stored="true" /> 
<field name="nofyears_1" type="string" indexed="true" stored="true" /> 

以下のように両方がストリングとして格納されます。ここ

問題は、範囲クエリがweight_valueフィールド上で完璧に動作しますが、nofyears_1フィールド上では動作しませんです。

この

weight_value:[40 TO 50] => Get all the results only between 40 TO 50 

しかし

nofyears_1:[1 TO 10] => Doesn't get results between 1 TO 10, but it fetches the result of 1 & 10 only. 

のと同様で、

nofyears_1:[1 TO 5] => It fetches the result of 1, 5 & 15 only. 

よう

私の範囲のクエリは、この分野で動作しないのはなぜ?

あなたは数値で範囲クエリをしたい場合は両方のフィールドは、数値フィールドを使用し、文字列んが、複数の値

答えて

2

ません。問題は、今、あなたは文字列フィールドを使用しているということで、文字列のソート順は以下のとおりです。

1 
10 
11 
... 
2 
20 
... 
40 
41 
.. 
49 
50 

..あなたは、文字列フィールドに[1 TO 10]を照会している場合、あなただけの最初に取得しますので、 2つのエントリバック(40から50までのすべての値を取得する40〜50間、 - あなたが400または499でのエントリーがあった場合、彼らも含まれると思い):

.. 
-- 
1 
10 
-- 
11 
... 

あなたが適切なフィールドタイプを使用する場合は(整数/この場合int)を使用すると、範囲クエリは期待通りに機能します。

フィールドタイプを変更した後でインデックスを再作成する必要があることを覚えておいてください。セットアップの方法によっては、schema.xmlの定義を変更するか、マネージドスキーマAPIを使用して変更する必要があります。

+0

ありがとう..私の問題を解決しました。 –

関連する問題