gpt4 book ai didi

php - Symfony2 中使用 Solr 的搜索框

转载 作者:行者123 更新时间:2023-12-04 12:42:00 27 4
gpt4 key购买 nike

我想在我网站的首页创建搜索框,但我不知道如何使用 Solr 创建一个搜索框。我所有的网站都是在开发的Symfony2 .我不使用数据库进行搜索。

我怎么能做到这一点?

在我的项目 Solr 包中使用这个:

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>

我的 Controller 的一些例子:
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 "for in"来显示你的 solr 文档

关于php - Symfony2 中使用 Solr 的搜索框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14041524/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com