我想在我的网站的首页创建搜索框,但我不知道如何使用Solr创建一个.我所有的网站都是在Symfony2开发的.我不使用数据库进行搜索.
我该怎么办?
在我的项目中,Solr bundle使用这个:
use SolrClient; use SolrQuery; use SolrObject; use SolrDocument; use SolrInputDocument;
在基本的twig文件中:
<form action="{{ path("home_search") }}" method="get"> <input type="search" name="search"><br> <input type="submit" value="search"> </form>
我的控制器的一些例子:
public function searchAction($templateName = '') { $solrService = $this->get('rocket.solr_service'); $solrQuery = new SolrQuery('*:*'); $solrQuery->addField('id') ->addField('name'); if (!empty($templateName)) { $solrQuery->addFilterQuery(sprintf('name:"%s" OR design_template_tag_name:"%1$s" OR design_category_name:"%1$s"',$templateName)); } $solrQuery->setRows(1000); $solrObject = $solrService->query( 'RocketBraPrintBundle:DesignTemplate',$solrQuery,SolrService::WRITER_FORMAT_SOLR_OBJECT ); $templates = $solrObject->offsetGet('response')->offsetGet('docs'); if (!$templates) { if (!empty($templateName)) { $this->setFlash('catalog-message','No results found for your search.'); return $this->searchDesignTemplates($categoryTreeSlug,$productFamilyFaceId); } return array(); } return $templates; }
但是在这个渲染的twig文件中,我不知道我会写什么.
您可以使用日光灯实施
https://github.com/nelmio/NelmioSolariumBundle
真的很好,更好的solr查询
我已经用它了
这里是一个样本
$query = 'foo'; $page = 1; if (array_key_exists('page',$params)) { $page = (int) $params['page']; } $rows = 10; if (array_key_exists('limit',$params)) { $rows = (int) $params['limit']; } $solarium = $this->get('solarium.client'); //select $select = $solarium->createSelect(); $escapedQuery = $select->getHelper()->escapePhrase($query); //dismax $dismax = $select->getDisMax(); // override the default setting of 'dismax' to enable 'edismax' $dismax->setQueryParser('edismax'); //fields $dismax->setQueryFields( array('title^5','description^0.7')); $select->setQuery($escapedQuery); //limit $select->setRows($rows); $select->setStart(($page - 1) * $rows); //type spot only $select->createFilterQuery('typeFilter') ->setQuery(sprintf('type:%s','spot')); $resultset = $solarium->select($select);
使用foreach或twig“在”显示您的solr文档