private function getQueryIndex($query, SearchEngineOptions $options)
 {
     $index = '*';
     $index_keys = [];
     foreach ($options->getDataboxes() as $databox) {
         $index_keys[] = $this->CRCdatabox($databox);
     }
     if (count($index_keys) > 0) {
         if ($options->getFields() || $options->getBusinessFieldsOn()) {
             if ($query !== '' && $options->isStemmed() && $options->getLocale()) {
                 $index = 'metadatas' . implode('_stemmed_' . $options->getLocale() . ', metadatas', $index_keys) . '_stemmed_' . $options->getLocale();
                 $index .= ', metas_realtime_stemmed_' . $options->getLocale() . '_' . implode(', metas_realtime_stemmed_' . $options->getLocale() . '_', $index_keys);
             } else {
                 $index = 'metadatas' . implode(',metadatas', $index_keys);
                 $index .= ', metas_realtime' . implode(', metas_realtime', $index_keys);
             }
         } else {
             if ($query !== '' && $options->isStemmed() && $options->getLocale()) {
                 $index = 'documents' . implode('_stemmed_' . $options->getLocale() . ', documents', $index_keys) . '_stemmed_' . $options->getLocale();
                 $index .= ', docs_realtime_stemmed_' . $options->getLocale() . '_' . implode(', docs_realtime_stemmed_' . $options->getLocale() . '_', $index_keys);
             } else {
                 $index = 'documents' . implode(', documents', $index_keys);
                 $index .= ', docs_realtime' . implode(', docs_realtime', $index_keys);
             }
         }
     }
     return $index;
 }
Exemplo n.º 2
0
 /**
  * Parses the query for search engine
  *
  * @param  integer       $sbas
  * @param  string        $query
  * @return PhraseaEngine
  */
 private function singleParse($sbas, $query, SearchEngineOptions $options)
 {
     $this->qp[$sbas] = new PhraseaEngineQueryParser($this->app, $options->getLocale());
     $this->qp[$sbas]->debug = false;
     $simple_treeq = $this->qp[$sbas]->parsequery($query);
     $this->qp[$sbas]->priority_opk($simple_treeq);
     $this->qp[$sbas]->distrib_opk($simple_treeq);
     $this->needthesaurus[$sbas] = false;
     $this->indep_treeq[$sbas] = $this->qp[$sbas]->extendThesaurusOnTerms($simple_treeq, true, true, false);
     $this->needthesaurus[$sbas] = $this->qp[$sbas]->containsColonOperator($this->indep_treeq[$sbas]);
     return $this;
 }