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 でのみ検索したいのですが、DB 全体を検索しています。どうすればそれを作ることができますか?ありがとう。

4

1 に答える 1

0

用語コンポーネントを使用する必要がありますか?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 . ')');

    /* ... */

?>
于 2011-05-31T16:21:36.087 に答える