2013-10-09 1 views
0

J'ai une requête Solr qui renvoie les résultats d'une collection d'environ 700 000 documents. Il fonctionne sur un seul maître avec une instance esclave.La facette Solr est incorrecte

Je filtre mes documents et exécute facettes sur un champ (sports_is). Cependant, le nombre de résultats de facette unique, leur combinaison en tant que requête de facette et leur application en tant que fq est différent. Comment est-ce possible?

Ceci est mon fq (assez simple):

fq":["type_id_v:configurable", 
    "is_salable_i:1", 
    "category_id_is:10143"] 

Cette facette requête

"facet.query":"sports_is:(117532 OR 117519 OR 117520 OR 117521 OR 117522 OR 117518)" 

rendements 177 résultats. Lorsque j'ajoute la requête de facette comme fq à ma requête, j'obtiens aussi 177 résultats. Donc, cela semble être le bon compte.

Mais

"facet.field":"sports_is" 

retours Plus de résultats si vous additionnez les résultats individuels (la somme est de 300):

"facet_fields":{ 
    "sports_is":[ 
    "117523",2724, 
    "117515",1767, 
    "117514",1522, 
    "117510",1423, 
    "118851",502, 
    "117517",473, 
    "117516",458, 
    "117527",327, 
    "117511",297, 
    "118863",240, 
    "118855",181, 
    "118866",175, 
    "118865",160, 
     "117520",149, 
    "118867",97, 
    "117509",88, 
     "117521",58, 
     "117518",42, 
    "118854",42, 
    "117512",38, 
    "117524",38, 
    "117513",37, 
     "117519",36, 
    "118853",17, 
    "118856",17, 
     "117522",15, 
    "118864",9, 
    "118868",7, 
    "118860",2, 
    "118857",1, 
    "118862",1, 
    "119190",1]} 

Comment est-ce possible? La logique est-elle différente entre la sommation des comptes uniques et l'obtention du résultat accumulé?

+0

comment comptez-vous 300? Pouvez-vous détailler ce processus? –

+0

aussi quel est le type de champ de sport_is? –

+0

300 est la somme des valeurs sport_is 117518 à 117522 (elles sont également interrogées dans la requête de facette). J'avais l'intention ces derniers dans le résultat de facette ci-dessus. Le type de données est "is", liste de valeurs entières. – Juergen

Répondre

0

si vous dataType est ceci:

<dynamicField name="*_is" type="int" indexed="true" stored="true" multiValued="true"/> 

qui signifie qu'un seul document peut contenir plus d'un identifiant. lorsque vous appliquez une requête de filtre, vous comptez le nombre de documents (177 dans votre cas) mais lorsque vous effectuez une facette sur un champ à valeurs multiples, vous obtenez le nombre de jetons dans le champ, ce qui signifie que plus d'un identifiant pour un total de 300.

Vérifiez ce post forum pour un problème similaire: http://lucene.472066.n3.nabble.com/How-to-facet-data-from-a-multivalued-field-td3897853.html