私はすべてのオーバーフロー/交換サイトを検索し、何時間もGoogleを調べても役に立たなかったので、誰かがSolrの天才であり、どこが間違っているのか教えてくれることを願っています。
以前の検索サーバーとSolrの間で移行中です。そのため、当面は地理データを別々の緯度と経度のフィールドに保存する必要があります。solr.TrieDoubleField
多くの情報源が推奨するように、を使用してフィールドを定義しました。
<fieldType name="tdouble" class="solr.TrieDoubleField" precisionStep="8" omitNorms="true" positionIncrementGap="0"/>
<field name="latitude_1" type="tdouble" indexed="true" stored="false" multiValued="false" required="false" />
<field name="longitude_1" type="tdouble" indexed="true" stored="false" multiValued="false" required="false" />
私が抱えている問題は、経度の値(主にゼロ未満)に対する範囲クエリがまったく機能しないことです。不思議なことに、クエリ値を正の数として入力すると範囲は機能しますが、それは自信を刺激しません。
クエリの例を次に示します。
longitude_1:[-95 TO -94]
これは結果を返しません。ただし、次のように正の数でクエリを実行すると、次のようになります。
longitude_1:[94 TO 95]
私はこれらの結果を得る(私fl=longitude_1
は簡潔にするために使用した):
<doc>
<str name="longitude_1">-94.60046</str>
</doc>
<doc>
<str name="longitude_1">-94.03403</str>
</doc>
<doc>
<str name="longitude_1">-94.03403</str>
</doc>
値がタグで表示されていることに気づきましたが、<str>
これは内部の文字列出力表現であると想定していますTrieDoubleField
。そうでない場合は、スキーマまたはSolr構成に何か問題がある可能性があります。