2010-09-19 4 views
1

J'utilise Solr-php-client pour communiquer avec solr via php.Solr autoCommit ne fonctionne pas

je recherche Solr en utilisant ce php-client et parmi d'autres informations que je reçois de Solr, les résultats totaux sont renvoyés à une variable en php:

$results = $solr->search($querystring, $start_offset, $limit, $solr_params); 
$num_total = (int) $results->response->numFound; 

Mon problème est que quand j'ajouter un document à Solr SANS le valider, $ num_total est augmenté de toute façon. Cela signifie donc l'une des deux choses, ou les deux:

1- Solr autoCommit ne fonctionne pas
2- Les returnes solr-php-client n ° de documents au lieu de n ° de documents engagés.

J'ai peut-être manqué quelque chose de simple ici, donc j'apprécierais toute aide.

Quoi qu'il en soit, voici ce que je l'ai fait avec le solrconfig.xml:

<autoCommit> 
    <maxDocs>3</maxDocs> 
    <maxTime>60000</maxTime> 
    </autoCommit> 

Le nombre « 3 » est uniquement à des fins de test, mais n'a pas fonctionné comme mentionné ci-dessus.

Y a-t-il d'autres paramètres auxquels je devrais penser en plus de ce qui précède lors de l'utilisation de autoCommit?

J'ai redémarré jetty (mon conteneur) et solr après avoir également modifié le fichier solrconfig.xml.

Si vous avez besoin de plus il suffit de saisir le moi savoir ...

Merci

Répondre

0

Le client php Solr ne fait pas ici quelque chose de spécial, le numFound est exactement ce que Solr se retourne. Ce qui devrait être basé sur des documents validés au moment de la requête.

Je suis légèrement confus par votre question si. Est-ce que vous vous plaignez que les documents sont auto-validés avant que vous ne les attendiez? Si c'est le cas, vous devriez tester la façon inverse de votre choix, en augmentant le nombre de maxDocs dans le bloc autoCommit. Je ne suis pas sûr de ce que garantit Solr lui-même pour combien proche de ce maxDocs il permettra avant de déclencher un commit. Les paramètres typiques sont de 1 000 ou 10 000 selon vos caractéristiques d'indexation. Et puis le temps est généralement utilisé comme une limite supérieure de combien de temps vous êtes prêt à attendre qu'un document apparaisse dans l'index. Vous essayez d'atteindre un équilibre entre l'efficacité et la latence. En tout cas, la seule façon d'aller au fond de ce qui se passe est de regarder le journal de Solr - il aura des entrées pour l'ajout, la requête et le commit et vous pouvez voir comment proches ou éloignés, ils sont les uns des autres, ou s'il existe un commit explicite que vous ne connaissez pas dans le code.

Si vous pouviez mettre à jour votre question avec une partie de ce journal, cela vous aiderait à diagnostiquer.