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; }
/** * 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; }