简体   繁体   中英

Where is the code that passes the search term to solr search engine in Magento

Does anyone know the code that passes the search term to solr search engine in Magento. For example, when you search for "spider man" in the search bar on the Front end, where is the code, the template file, the module and the php class that passes this search term to the solr search engine or the magento default fulltext search engeine.

I am stocked after finding this code, app/code/core/Mage/CatalogSearch/controllers/ResultController.php

/**
 * Display search result
 */
public function indexAction()
{
    $query = Mage::helper('catalogsearch')->getQuery();
    /* @var $query Mage_CatalogSearch_Model_Query */

    $query->setStoreId(Mage::app()->getStore()->getId());

    if ($query->getQueryText() != '') {
        if (Mage::helper('catalogsearch')->isMinQueryLength()) {
            $query->setId(0)
                ->setIsActive(1)
                ->setIsProcessed(1);
        }
        else {
            if ($query->getId()) {
                $query->setPopularity($query->getPopularity()+1);
            }
            else {
                $query->setPopularity(1);
            }

            if ($query->getRedirect()){
                $query->save();
                $this->getResponse()->setRedirect($query->getRedirect());
                return;
            }
            else {
                $query->prepare();
            }
        }

        Mage::helper('catalogsearch')->checkNotes();

        $this->loadLayout();
        $this->_initLayoutMessages('catalog/session');
        $this->_initLayoutMessages('checkout/session');
        $this->renderLayout();

        if (!Mage::helper('catalogsearch')->isMinQueryLength()) {
            $query->save();
        }
    }
    else {
        $this->_redirectReferer();
    }
}

In the file app/code/core/Enterprise/Search/Model/Adapter/HttpStream.php The function is:

protected function _search($query, $params = array())

The line that sends the query to solr:

    $response = $this->_client->search(
        $searchConditions, $offset, $limit, $searchParams, Apache_Solr_Service::METHOD_POST
    );

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM