2012-06-08 42 views
0

我已經搜索了所有的溢出/交換站點,並花了數小時對Google無濟於事,所以我希望有人是Solr的天才,並能告訴我我哪裏出錯了。針對TrieDoubleField的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配置中可能還有其他問題。

回答

0

減號可能被解釋爲查詢操作符(意味着該子句被禁止)。你應該嘗試escape它(帶反斜槓)。