/**
  * Produces a snippet with the first match result for the search term.
  *
  * @param string $searchword The search word
  * @param integer $resultTokens The amount of tokens (words) to get surrounding the match hit. (defaults to 60)
  * @param string $ellipsis added to the end of the string if the text was longer than the snippet produced. (defaults to "...")
  * @param string $beginModifier added immediately before the searchword in the snippet (defaults to <b>)
  * @param string $endModifier added immediately after the searchword in the snippet (defaults to </b>)
  * @return string
  */
 public function fulltextMatchResult($searchword, $resultTokens = 60, $ellipsis = '...', $beginModifier = '<b>', $endModifier = '</b>')
 {
     $query = $this->buildQueryString();
     $results = $this->indexClient->query($query);
     $queryParameters = array();
     $identifierParameters = array();
     foreach ($results as $key => $result) {
         $parameterName = ':possibleIdentifier' . $key;
         $identifierParameters[] = $parameterName;
         $queryParameters[$parameterName] = $result['__identifier__'];
     }
     $queryParameters[':beginModifier'] = $beginModifier;
     $queryParameters[':endModifier'] = $endModifier;
     $queryParameters[':ellipsis'] = $ellipsis;
     $queryParameters[':resultTokens'] = $resultTokens * -1;
     $matchQuery = 'SELECT snippet(fulltext, :beginModifier, :endModifier, :ellipsis, -1, :resultTokens) as snippet FROM fulltext WHERE fulltext MATCH :searchword AND __identifier__ IN (' . implode(',', $identifierParameters) . ') LIMIT 1;';
     $queryParameters[':searchword'] = $searchword;
     $matchSnippet = $this->indexClient->executeStatement($matchQuery, $queryParameters);
     if (isset($matchSnippet[0]['snippet']) && $matchSnippet[0]['snippet'] !== '') {
         $match = $matchSnippet[0]['snippet'];
     } else {
         $match = '';
     }
     return $match;
 }
 /**
  * @param NodeInterface $node
  * @param array $fulltext
  */
 protected function addFulltextToRoot(NodeInterface $node, $fulltext)
 {
     $fulltextRoot = $this->findFulltextRoot($node);
     if ($fulltextRoot !== NULL) {
         $identifier = $this->generateUniqueNodeIdentifier($fulltextRoot);
         $this->indexClient->addToFulltext($fulltext, $identifier);
     }
 }
 /**
  * Utility to check the content of the index.
  *
  * @param string $queryString
  */
 public function findCommand($queryString)
 {
     $result = $this->indexClient->query($queryString);
     $this->output->outputTable($result);
 }