0

我有这个脚本:

$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 中搜索。现在它正在搜索整个数据库。我该怎么做?谢谢。

4

1 回答 1

0

您需要使用条款组件吗?如果没有,我的建议是在Solr 的Query SyntaxSolrQuery::setQuery的帮助下使用和设置 cat 字段上的静态过滤器来构建您的查询。

例子:

<?php

    /* ... */

    $query = new SolrQuery();
    $query->setQuery('(cat:2) AND (keywords:' . $keyword . ')');

    /* ... */

?>

...或使用SolrQuery构造函数的简短形式:

<?php

    /* ... */

    $query = new SolrQuery('(cat:2) AND (keywords:' . $keyword . ')');

    /* ... */

?>
于 2011-05-31T16:21:36.087 回答