SOLR и ключевые слова - PullRequest
       18

SOLR и ключевые слова

0 голосов
/ 30 мая 2011

У меня есть этот скрипт:

$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. Теперь он ищет всю БД. как я могу это сделать? спасибо.

1 Ответ

0 голосов
/ 31 мая 2011

Вам нужно использовать УсловияКомпонента?Если нет, то я бы предложил создать запрос с помощью SolrQuery::setQuery и установить статический фильтр в поле cat с помощью Solr Синтаксис запроса .

Пример:

<?php

    /* ... */

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

    /* ... */

?>

... или в краткой форме с использованием конструктора SolrQuery:

<?php

    /* ... */

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

    /* ... */

?>
...