2010-11-24 11 views
1

Je tente de configurer une recherche à facettes pour mon site Web, mais je rencontre des problèmes.Comment effectuer une recherche facettée efficace à l'aide de champs à valeurs multiples avec le client solr php?

Les champs de facette sont configurés en tant que champs dynamiques à valeurs multiples. Bien que la plupart des produits n'aient qu'une seule valeur pour chaque champ à facettes (désigné par fq_ *, où * est l'attribut de l'attribut de produit stocké), certains ont plusieurs valeurs.

La recherche facettée fonctionnait très bien - et rapide jusqu'à ce que j'aie essayé d'accéder à une catégorie de nos produits où 1 ou plusieurs des produits avaient plusieurs valeurs sur un attribut à facettes. Pour cette catégorie (et d'autres similaires), je reçois une erreur du client php solr: "500" Statut: Erreur interne du serveur. Après avoir cherché pendant un certain temps, j'ai trouvé que facet.method égalait à "enum" qu'il résolvait l'erreur - mais cela a augmenté le temps nécessaire pour charger la page de façon spectaculaire.

Existe-t-il un moyen de faire une recherche facettée comme celle-ci avec plus d'efficacité? (Je peux gérer cela en prenant un peu plus de temps que la méthode "fc", mais pas beaucoup).

Merci.

Edit (voici les paramètres):

$solr->search('categoryid:4810', 0, 15, array(8) { 
    ["sort"]=> 
    string(17) "price_Default asc" 
    ["facet"]=> 
    string(4) "true" 
    ["facet.field"]=> 
    array(12) { 
    [0]=> 
    string(7) "mfgname" 
    [1]=> 
    string(14) "fq_33111116587" 
    [2]=> 
    string(14) "fq_33111116586" 
    [3]=> 
    string(14) "fq_33111114704" 
    [4]=> 
    string(11) "fq_33113118" 
    [5]=> 
    string(9) "fq_331472" 
    [6]=> 
    string(10) "fq_3312052" 
    [7]=> 
    string(9) "fq_331611" 
    [8]=> 
    string(10) "fq_3312304" 
    [9]=> 
    string(14) "fq_33111116919" 
    [10]=> 
    string(9) "fq_331100" 
    [11]=> 
    string(9) "fq_331710" 
    } 
    ["facet.sort"]=> 
    string(5) "false" 
    ["facet.mincount"]=> 
    int(1) 
    ["facet.missing"]=> 
    string(5) "false" 
    ["facet.limit"]=> 
    int(-1) 
    ["facet.method"]=> 
    string(4) "enum" 
} 
); 
+0

Pouvez-vous afficher les paramètres réels (tous) pour votre requête? – netcoder

+0

J'ai modifié la question pour inclure les paramètres. – Chris

Répondre

0

Vous êtes probablement en cours d'exécution dans des problèmes de mémoire non de Solr, mais de Tomcat ... Le facettage de Solr prend beaucoup de mémoire et la configuration habituelle de Tomcat est livré avec un très faible configuration de la mémoire, augmenter la mémoire de votre JAVA_OPTS:

(linux) export JAVA_OPTS = « - Xmx3500m -Xms3500m »

ou une autre valeur appropriée à la quantité d'informations que vous gérez et votre serveur disponible.

Voici quelques bonnes ressources sur ce point: http://wiki.apache.org/tomcat/FAQ/Memory http://helpdeskgeek.com/how-to/increase-tomcat-memory-allocation/