2017-05-04 38 views
0

我需要使用solr進行地址搜索。我必須將國家和州列入城市搜索,但這裏我遇到了數據問題。組查詢中的Solr錯誤

與此查詢我獲得的所有城市的分組:

Query: country:"SPAIN" AND state:"MURCIA" 
Field: city 
Params: group=true&group.field=ciudadElectoral&group.format=simple 

而且我得到這樣的:

{ 
    "responseHeader": { 
    "status": 0, 
    "QTime": 3, 
    "params": { 
     "group.format": "simple", 
     "fl": "city", 
     "indent": "true", 
     "q": "country:\"SPAIN\" AND state:\"MURCIA\"", 
     "_": "1493920188445", 
     "group.field": "city", 
     "group": "true", 
     "wt": "json" 
    } 
    }, 
    "grouped": { 
    "city": { 
     "matches": 80, 
     "doclist": { 
     "numFound": 80, 
     "start": 0, 
     "docs": [ 
      { 
      "city": "CIUDAD DE BUENOS AIRES" 
      }, 
      { 
      "city": "CIUDAD DE BUENOS AIRES" 
      }, 
      { 
      "city": "VILLA MARTINEZ" 
      }, 
      { 
      "city": "PALERMO" 
      } 
     ] 
     } 
    } 
    } 
} 

「德城布宜諾斯艾利斯」是重複的,而另一個城市「別墅ALBOROTO」是失蹤。

如果我一拖再拖參數「group.format =簡單」,我獲得這樣的輸出:

{ 
    "responseHeader": { 
    "status": 0, 
    "QTime": 2, 
    "params": { 
     "fl": "city", 
     "indent": "true", 
     "q": "country:\"SPAINT\" AND state:\"MURCIA\"", 
     "_": "1493920434726", 
     "group.field": "city", 
     "group": "true", 
     "wt": "json" 
    } 
    }, 
    "grouped": { 
    "city": { 
     "matches": 80, 
     "groups": [ 
     { 
      "groupValue": "de", 
      "doclist": { 
      "numFound": 5, 
      "start": 0, 
      "docs": [ 
       { 
       "city": "CIUDAD DE BUENOS AIRES" 
       } 
      ] 
      } 
     }, 
     { 
      "groupValue": "buen", 
      "doclist": { 
      "numFound": 3, 
      "start": 0, 
      "docs": [ 
       { 
       "city": "CIUDAD DE BUENOS AIRES" 
       } 
      ] 
      } 
     }, 
     { 
      "groupValue": "vill", 
      "doclist": { 
      "numFound": 2, 
      "start": 0, 
      "docs": [ 
       { 
       "city": "VILLA MARTINEZ" 
       } 
      ] 
      } 
     }, 
     { 
      "groupValue": "palerm", 
      "doclist": { 
      "numFound": 70, 
      "start": 0, 
      "docs": [ 
       { 
       "city": "PALERMO" 
       } 
      ] 
      } 
     } 
     ] 
    } 
    } 
} 

我可以看到「groupValue」有一個奇怪的值,而不是場外的完整的價值。我認爲這是問題。

我的太陽能版本是4.10,任何人都知道如何正確地執行此查詢?謝謝。

回答

1

如果打算按字段進行分組,則該字段應該是string字段(或者帶有KeywordTokenizer的字段只有小寫字母過濾器)。你看到的是在處理過的令牌上執行的分組(這是Solr在其後臺索引中所做的)。使用字符串字段或帶有小寫字母的KeywordTokenizer可以避免分割和填充這些字段。

你可以看到「PALERMO」已經被處理爲「palerm」,而「CIUDAD DE BUENOS AIRES」被分成了多個標記,其中包括「de」和「buen」。然後將這些值用於組操作,從而給出與預期不同的結果。

+0

謝謝,我在文檔中看到這種情況(我是SOLR中的新成員)。觸摸這可能是乏味的,最後我將其更改爲Oracle Query。 – Ildelian

+0

不是。你只需要它作爲一個字符串字段。您可以使用copyField指令將其複製到用於分組的單獨字段中。這就像你的模式中的兩個語句。 – MatsLindh