2012-03-13 3 views
0

У меня есть простая схема:поиск Solr ключевых слов с НИЗОМ 333

<fields> 
    <field name="mongo_id" type="string" indexed="true" stored="true" required="true" /> 
    <field name="nid" type="int" indexed="true" stored="true" required="true" /> 
    <field name="keywords" type="text_general" indexed="true" stored="false" /> 
</fields> 

Я хочу, чтобы возвращать результаты, соответствующие ключевые слова и имеет определенную NID.

$query = $_GET['q']; 
$solr = new Apache_Solr_Service('localhost', 8983, '/solr/'); 
$results = $solr->search($query, 0, $limit); 

ответ

3

Можно также использовать запрос фильтра:

$additionalParameters = array('fq' => 'nid:333'); 
$results = $solr->search($query, 0, $limit, $additionalParameters); 
0

Запрос будет выглядеть примерно так:

?q=+keywords:keyword +nid:nid 

Конечно, + знаки должны быть URL, закодированного, если вы звоните веб-службы Solr:% 2B это кодировка для +. Причиной этого является то, что иначе + будет интерпретироваться как пространство.

Кроме того, если по умолчанию выполняется поиск по полю keywords, вы можете опустить keywords: в запросе выше.

+0

Я не хочу, чтобы пользователь должен положить NID: 333 ... это плохо Кодирую? –

+0

Я не понимаю, почему вы не можете жестко закодировать. С другой стороны, у вас может быть SELECT на предыдущей странице идентификаторов узлов, из которых пользователь может выбрать. Опция «fq» из поста @samuelg выше для «nid» может быть еще лучше, так как «fq» означает запрос фильтра, который не повлияет на оценку результата. –

Смежные вопросы