Go easy on your use of commit - use the <autocommit /> section solrconfig.xml instead.
Also consider using optimize() once a day if you are doing lots of adds/removes.(PECL solr >= 0.9.2)
SolrClient::commit β ΠΠ°Π²Π΅ΡΡΠ°Π΅Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈ ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΠ΄Π΅Π»Π°Π»ΠΈ Π² ΠΈΠ½Π΄Π΅ΠΊΡΠ΅
$softCommit = false, bool $waitSearcher = true, bool $expungeDeletes = false): SolrUpdateResponseΠΠ΅ΡΠΎΠ΄ Π·Π°Π²Π΅ΡΡΠ°Π΅Ρ Π²ΡΠ΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ ΠΈ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ΄Π΅Π»Π°Π»ΠΈ Π² ΠΈΠ½Π΄Π΅ΠΊΡΠ΅.
softCommitΠΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ Β«ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅Β» ΠΈΠ½Π΄Π΅ΠΊΡΠ° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½Π΅Π΅, Π½ΠΎ Π±Π΅Π· Π³Π°ΡΠ°Π½ΡΠΈΠΉ ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΠΎΡΡΠΈ Π΄Π°Π½Π½ΡΡ Π½Π° Π΄ΠΈΡΠΊΠ΅ (Solr4.0+).
ΠΡΠ³ΠΊΠ°Ρ ΡΠΈΠΊΡΠ°ΡΠΈΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π±ΡΡΡΡΠ΅Π΅, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π΄Π΅Π»Π°Π΅Ρ Π²ΠΈΠ΄ΠΈΠΌΡΠΌΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΈΠ½Π΄Π΅ΠΊΡΠ° ΠΈ Π½Π΅ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΡΠ΅Ρ (fsync) ΡΠ°ΠΉΠ»Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠ° Ρ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΠΌ ΠΈΠ»ΠΈ Π½Π΅ Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅Ρ Π½ΠΎΠ²ΡΠΉ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ ΠΈΠ½Π΄Π΅ΠΊΡΠ°. ΠΡΠΈ ΡΠ±ΠΎΠ΅ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Ρ JVM ΠΈΠ»ΠΈ ΠΏΠΎΡΠ΅ΡΠΈ ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΡΠ²ΠΈΠ»ΠΈΡΡ ΠΏΠΎΡΠ»Π΅ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ ΠΆΡΡΡΠΊΠΎΠΉ ΡΠΈΠΊΡΠ°ΡΠΈΠΈ, ΠΏΠΎΡΠ΅ΡΡΡΡΡΡ. ΠΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ ΠΏΠΎΠΈΡΠΊΠ° Ρ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡΠΌΠΈ ΠΊ ΡΠ°Π±ΠΎΡΠ΅ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅, ΠΊΠΎΡΠΎΡΡΠΉ Π±Π»ΠΈΠ·ΠΎΠΊ ΠΊ ΡΠ΅Π°Π»ΡΠ½ΠΎΠΌΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ (ΠΊΠΎΡΠΎΡΡΠ΅ Ρ ΠΎΡΡΡ, ΡΡΠΎΠ±Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΈΠ½Π΄Π΅ΠΊΡΠ° Π±ΡΠ»ΠΈ Π±ΡΡΡΡΠΎ Π²ΠΈΠ΄Π½Ρ Π΄Π»Ρ ΠΏΠΎΠΈΡΠΊΠ°), Π·Π°Ρ ΠΎΡΡΡ ΡΠ°ΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΌΡΠ³ΠΊΡΡ ΡΠΈΠΊΡΠ°ΡΠΈΡ, Π° ΠΆΡΡΡΠΊΡΡ ΡΠΈΠΊΡΠ°ΡΠΈΡ ΡΠ΅ΠΆΠ΅.
waitSearcherΠΠ»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡ Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° Π½Π΅ ΠΎΡΠΊΡΠΎΠ΅ΡΡΡ Π½ΠΎΠ²Π°Ρ ΠΏΠΎΠΈΡΠΊΠΎΠ²Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° ΠΈ Π½Π΅ Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΡΠ΅ΡΡΡ ΠΊΠ°ΠΊ ΠΎΡΠ½ΠΎΠ²Π½Π°Ρ ΠΏΠΎΠΈΡΠΊΠΎΠ²Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ°, ΡΠ΄Π΅Π»Π°Π² ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π²ΠΈΠ΄ΠΈΠΌΡΠΌΠΈ.
expungeDeletesΠΠ±ΡΠ΅Π΄ΠΈΠ½ΠΈΡΡ ΡΠ΅Π³ΠΌΠ΅Π½ΡΡ Ρ ΡΠ΄Π°Π»Π΅Π½ΠΈΡΠΌΠΈ (Solr1.4 +).
ΠΠ΅ΡΠΎΠ΄ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡ SolrUpdateResponse ΠΈΠ»ΠΈ Π²ΡΠ±ΡΠ°ΡΡΠ²Π°Π΅Ρ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅, Π΅ΡΠ»ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° ΠΎΡΠΈΠ±ΠΊΠ°.
ΠΠ΅ΡΠΎΠ΄ Π²ΡΠ±ΡΠ°ΡΡΠ²Π°Π΅Ρ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ SolrClientException, Π΅ΡΠ»ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ ΠΎΡΠΊΠ°Π·Π°Π» ΠΈΠ»ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ.
ΠΠ΅ΡΠΎΠ΄ Π²ΡΠ±ΡΠ°ΡΡΠ²Π°Π΅Ρ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ SolrServerException, Π΅ΡΠ»ΠΈ ΡΠ΅ΡΠ²Π΅Ρ Solr Π½Π΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π» Π·Π°ΠΏΡΠΎΡ.
| ΠΠ΅ΡΡΠΈΡ | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ |
|---|---|
| PECL-ΠΌΠΎΠ΄ΡΠ»Ρ solr 1.1.0, PECL solr 2.0.0 | Π£Π΄Π°Π»ΠΈΠ»ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ $maxSegments. |
| PECL-ΠΌΠΎΠ΄ΡΠ»Ρ solr 2.0.0b | ΠΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΈ API: SolrClient::commit ([ int $maxSegments = 0 [, bool $softCommit = false [, bool $waitSearcher = true[, bool $expungeDeletes = false ]]] ) |
| PECL-ΠΌΠΎΠ΄ΡΠ»Ρ solr 0.9.2 | ΠΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΈ ΡΠΈΠ³Π½Π°ΡΡΡΡ: SolrClient::commit ([ int $maxSegments = 1 [, bool $waitFlush = true [, bool $waitSearcher = true ]]] ). $waitFlush: ΠΠ»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡ Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΈΠ½Π΄Π΅ΠΊΡΠ° Π½Π΅ Π·Π°ΠΏΠΈΡΡΡΡΡ Π½Π° Π΄ΠΈΡΠΊ. |
PECL-ΠΌΠΎΠ΄ΡΠ»Ρ Solr >= 2.0 ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ Solr Server >= 4.0
Go easy on your use of commit - use the <autocommit /> section solrconfig.xml instead.
Also consider using optimize() once a day if you are doing lots of adds/removes.