/**
  * builds the from and where restrictions of the current query
  * @param string &$strQuery
  * @param string[] &$arrParameters
  * @return void
  */
 private function internalBuildQuery(&$strQuery, &$arrParameters)
 {
     $strQuery .= "FROM " . _dbprefix_ . "search_ix_document AS D\r\n                INNER JOIN " . _dbprefix_ . "search_ix_content AS z\r\n                        ON search_ix_content_document_id = search_ix_document_id\r\n             " . ($this->objMetadataFilter != null ? "  LEFT JOIN " . _dbprefix_ . "system ON search_ix_system_id = system_id " : "") . "\r\n                     WHERE 1=1 ";
     //metadata filter
     if ($this->objMetadataFilter != null) {
         $this->objMetadataFilter->getQuery($strQuery, $arrParameters);
     }
     $strQuery .= " AND z.search_ix_content_content LIKE ? AND D.search_ix_document_id = z.search_ix_content_document_id ";
     $arrParameters[] = $this->getObjTerm()->getStrText() . "%";
     if ($this->getObjTerm()->getStrField() != null) {
         $strQuery .= "AND search_ix_content_field_name = ? ";
         $arrParameters[] = $this->getObjTerm()->getStrField();
     }
 }
 /**
  * Adds the queried tables and the filter-restrictions to the generated query
  * @param string $strQuery
  * @param string[] $arrParameters
  */
 private function internalBuildQuery(&$strQuery, &$arrParameters)
 {
     $strQuery .= "FROM (SELECT search_ix_document_id, search_ix_system_id from " . _dbprefix_ . "search_ix_document AS D\r\n                 " . ($this->objMetadataFilter != null ? "  LEFT JOIN " . _dbprefix_ . "system ON search_ix_system_id = system_id " : "") . "\r\n                     WHERE ";
     $strWhereMust = "1=1 ";
     // metadata filter
     if ($this->objMetadataFilter != null) {
         $this->objMetadataFilter->getQuery($strWhereMust, $arrParameters);
     }
     /* @var $objTerm class_module_search_term */
     foreach ($this->arrMustNotOccurs as $objTerm) {
         $strWhereMust .= "AND NOT EXISTS (select 1 from " . _dbprefix_ . "search_ix_content WHERE search_ix_content_content= ? " . ($objTerm->getStrField() != null ? " AND search_ix_content_field_name = ? " : "") . " AND search_ix_document_id = search_ix_content_document_id) ";
         $arrParameters[] = $objTerm->getStrText();
         if ($objTerm->getStrField() != null) {
             $arrParameters[] = $objTerm->getStrField();
         }
     }
     /* @var $objTerm class_module_search_term */
     foreach ($this->arrMustOccurs as $objTerm) {
         $strWhereMust .= "AND exists (select 1 from " . _dbprefix_ . "search_ix_content WHERE search_ix_content_content= ? " . ($objTerm->getStrField() != null ? " AND search_ix_content_field_name = ? " : "") . " AND search_ix_document_id = search_ix_content_document_id) ";
         $arrParameters[] = $objTerm->getStrText();
         if ($objTerm->getStrField() != null) {
             $arrParameters[] = $objTerm->getStrField();
         }
     }
     $strQuery .= $strWhereMust . ") a ";
     $arrMustShouldTerms = array();
     /* @var $objTerm class_module_search_term */
     foreach ($this->arrMustOccurs as $objTerm) {
         $strWhere = " (search_ix_content_content = ? ";
         $arrParameters[] = $objTerm->getStrText();
         if ($objTerm->getStrField() != null) {
             $strWhere .= "AND search_ix_content_field_name = ? ";
             $arrParameters[] = $objTerm->getStrField();
         }
         $strWhere .= ")";
         $arrMustShouldTerms[] = $strWhere;
     }
     /* @var $objTerm class_module_search_term */
     foreach ($this->arrShouldOccurs as $objTerm) {
         $strWhere = " (search_ix_content_content = ? ";
         $arrParameters[] = $objTerm->getStrText();
         if ($objTerm->getStrField() != null) {
             $strWhere .= "AND search_ix_content_field_name = ? ";
             $arrParameters[] = $objTerm->getStrField();
         }
         $strWhere .= ")";
         $arrMustShouldTerms[] = $strWhere;
     }
     $strQuery .= "INNER JOIN (select search_ix_content_document_id, search_ix_content_score from " . _dbprefix_ . "search_ix_content where " . implode(" OR ", $arrMustShouldTerms) . ") z\r\n                        ON search_ix_document_id = search_ix_content_document_id";
 }