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>标签中,但我假设这是 internal 的字符串输出表示TrieDoubleField。如果不是这种情况,那么我的架构或 Solr 配置中可能有其他问题。

4

1 回答 1

0

减号可能会被解释为查询运算符(意​​味着该子句被禁止)。您应该尝试转义它(使用反斜杠)。

于 2012-06-12T22:57:56.827 回答