0

私はすべてのオーバーフロー/交換サイトを検索し、何時間も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構成に何か問題がある可能性があります。

4

1 に答える 1

0

マイナス記号はおそらくクエリ演算子として解釈されます (句が禁止されていることを意味します)。エスケープしてみてください(バックスラッシュを使用)。

于 2012-06-12T22:57:56.827 に答える