2012-12-16 17 views
13

ho i seguenti due campi nel mio schema solr:Solr sfaccettature: JSON incoerente formattazione

<field name="brand_id"  type="string" indexed="true" stored="true" /> 
<field name="category_id" type="string" indexed="true" stored="true" /> 

Quando faccio una richiesta con sfaccettature abilitati (sfaccettatura su brand_id) http://example.com/solr/select?wt=json&facet=true&facet.mincount=1&facet.field=brand_id&q= *: *

sfaccettatura output viene restituito in notazione oggetto:

"facet_counts": { 
    "facet_queries": { } 
    "facet_fields": { 
     "brand_id": [ 
      {"1350492":14}, 
      {"1350578":12}, 
      {"1350600":11}, 
      {"1350617":8} 
     ] 
    } 
} 

Tuttavia, ripetendo la stessa richiesta utilizzando il 'category_id' come campo sfaccettatura restituisce un arr ay notazione http://example.com/solr/select?wt=json&facet=true&facet.mincount=1&facet.field=category_id&q= *: *

"facet_counts":{ 
    "facet_queries":{}, 
    "facet_fields":{ 
     "category_id":[ 
      "230",20, 
      "259",13, 
      "154",12, 
      "249",11 
     ] 
    } 
} 

C'è un modo per forzare la formattazione Object Notation? Sto usando Solr 3,6

- AGGIORNAMENTO -

utilizzando il formato XML restituisce risultati corretti:

<lst name="facet_counts"> 
<lst name="facet_queries"/> 
<lst name="facet_fields"> 
    <lst name="brand_id"> 
     <int name="269115">136</int> 
     <int name="269394">110</int> 
    </lst> 


    <lst name="category_id"> 
     <int name="1348814">228</int> 
     <int name="1350591">218</int> 
    </lst> 
+1

qual è l'uscita quando si cambia in peso da JSON per xml? – pensz

+0

@pensz XML restituisce la struttura corretta (ho aggiornato la domanda). – mjalajel

+8

Sei assolutamente sicuro di non aggiungere json.nl = mappa alla prima query e non la seconda? –

risposta

0

Ho sperimentato una cosa simile qualche tempo fa.

provare ad aggiungere il tag multiValued = false alla definizione dei campi. Ricordo che lo aggiustava per me.

Potrebbe essere necessario reindice però.

0

Se si sta utilizzando il writer di risposta JSON, è possibile aggiungere il parametro json.nl alla stringa di query per formattare i conteggi dei facet.

json.nl=arrmap si formatterà come [{"facetValue1": facetCount1}, {"facetValue2": facetCount2}].

json.nl=map si formatterà come {"facetValue1": facetCount1, "facetValue2": facetCount2}.

Documenti per gli scrittori di risposta, e in particolare json.nl (nl = liste con nome) possono essere trovate qui: https://cwiki.apache.org/confluence/display/solr/Response+Writers#ResponseWriters-JSON-SpecificParameters

Problemi correlati