Aide nécessaire pour déterminer la raison pour laquelle maxClauseCount est défini sur l'erreur 1024
J'ai deux ensembles d'index de recherche.
TestIndex (utilisé dans notre environnement de test) et ProdIndex(utilisé dans l'environnement de PRODUCTION).
Recherche Lucene requête: +date:[20090410184806 À 20091007184806] fonctionne très bien pour le test de l'index, mais donne ce message d'erreur pour la Prod de l'index.
"maxClauseCount est de 1024"
Si j'exécute la ligne suivante juste avant l'exécution de la requête de recherche, alors que je n'ai pas cette erreur.
BooleanQuery.SetMaxClauseCount(Int16.MaxValue);
chercheur.Recherche(myQuery, collecteur);
Suis-je manqué quelque chose?Pourquoi ne reçois pas cette erreur dans le test de l'index?Le schéma pour les deux indices sont les mêmes.Ils ne diffèrent que par rapport au nombre de dossiers/données.PROD index a obtenu le plus grand nombre de dossiers(environ 1300) que ceux en tester un (vers 950).
Merci pour la lecture.
source d'informationauteur Ed.
Vous devez vous connecter pour publier un commentaire.
La gamme de requête essentiellement se transforme en une requête booléenne avec une clause pour chaque valeur possible, par un ou binaire ensemble.
Par exemple, la requête +prix:[10 à 13] est changée pour une requête booléenne
en supposant que toutes les valeurs de 10 à 13 dans l'index.
Je suppose, tous vos 1300 valeurs se situent dans la plage que vous avez donné. Donc, requête booléenne a 1300 clauses, ce qui est supérieur à la valeur par défaut de 1024. Dans le test de l'index, à la limite de 1024 n'est pas atteint puisqu'il y a seulement 950 valeurs.
J'ai eu le même problème. Ma solution a été d'attraper BooleanQuery.TooManyClauses et d'augmenter dynamiquement maxClauseCount.
Voici un code qui est similaire à ce que j'ai dans la production.
Bonne Chance,
Randy
J'ai eu ce même problème dans le code C# en cours d'exécution avec la Sitecore web système de gestion de contenu. J'ai utilisé de Randy réponse ci-dessus, mais n'a pas été en mesure d'utiliser le Système de obtenir et définir les fonctionnalités de propriété. Au lieu de cela j'ai récupéré le compte courant, l'incrémentée, et le ramener. A très bien fonctionné!
Viens de mettre,
BooleanQuery.setMaxClauseCount( Integer.MAX_VALUE );
et c'est tout.