我有这个脚本:
$removeList = array('+', '-', '&&', '||', '!', '(', ')', '{', '}', '[', ']', '^', '"', '~', '*', '?', ':', '\\');
$keyword = str_replace($removeList, '', mb_strtolower($_GET['query'], 'UTF-8'));
$keyword_str = strlen($keyword);
if($keyword_str>=3){
$options = array('hostname' => '**.*.*.*','login' => '', 'password' => '', 'port' => 8080);
$client = new SolrClient($options);
$query = new SolrQuery();
$query->setTerms(true);
$query->setTermsLimit(10);
$query->setTermsSort(1);
$query->setTermsField('keywords')->setTermsPrefix($keyword);
$updateResponse = $client->query($query);
}
这个脚本运行正常。但是如何按类别进行搜索?
示例:我的var是$_GET['query'] = 'au'
,但我想只在cat = 2中搜索。现在它搜索整个数据库。我该怎么做?感谢。
答案 0 :(得分:0)
您需要使用TermsComponent吗?如果没有,我的建议是使用SolrQuery::setQuery
建立您的查询,并在Solr的Query Syntax的帮助下在cat字段上设置静态过滤器。
示例:
<?php
/* ... */
$query = new SolrQuery();
$query->setQuery('(cat:2) AND (keywords:' . $keyword . ')');
/* ... */
?>
...或使用SolrQuery
构造函数的简短形式:
<?php
/* ... */
$query = new SolrQuery('(cat:2) AND (keywords:' . $keyword . ')');
/* ... */
?>