public function doKnowUpdate(WordsEntity $word)
 {
     // invalid setting
     if ($word->getStatus() != $this->marker->getStatus()) {
         throw new EngRuntimeException("status doesn't match!");
     }
     $newSuccessCount = $word->getSuccess() + 1;
     if ($newSuccessCount >= $this->marker->getSuccess()) {
         $newStatus = $this->getNextStatusWhenSuccess($word->getStatus());
         if ($newStatus != $word->getStatus()) {
             $word->setStatus($newStatus);
             $word->setSuccess(0);
             $word->setFailure(0);
         } else {
             $word->setSuccess($newSuccessCount);
         }
     } else {
         $word->setSuccess($newSuccessCount);
     }
 }