/**
  * Set search query text to filter
  *
  * @param string $query
  * @return $this
  */
 public function setQueryFilter($query)
 {
     $ifSynonymFor = $this->getConnection()->getIfNullSql('synonym_for', 'query_text');
     $this->getSelect()->reset(\Zend_Db_Select::FROM)->distinct(true)->from(['main_table' => $this->getTable('search_query')], ['query' => $ifSynonymFor, 'num_results'])->where('num_results > 0 AND display_in_terms = 1 AND query_text LIKE ?', $this->_resourceHelper->addLikeEscape($query, ['position' => 'start']))->order('popularity ' . \Magento\Framework\DB\Select::SQL_DESC);
     if ($this->getStoreId()) {
         $this->getSelect()->where('store_id = ?', (int) $this->getStoreId());
     }
     return $this;
 }
Exemple #2
0
 /**
  * Multi add entities data to fulltext search table
  *
  * @param int $storeId
  * @param array $entityIndexes
  * @param string $entity 'product'|'cms'
  * @return $this
  * @SuppressWarnings(PHPMD.UnusedFormalParameter)
  */
 public function saveEntityIndexes($storeId, $entityIndexes, $entity = 'product')
 {
     $data = [];
     $storeId = (int) $storeId;
     foreach ($entityIndexes as $entityId => $index) {
         $data[] = ['product_id' => (int) $entityId, 'store_id' => $storeId, 'data_index' => $index];
     }
     if ($data) {
         $this->_resourceHelper->insertOnDuplicate($this->getMainTable(), $data, ['data_index']);
     }
     return $this;
 }