2012-03-13 3 views
1
<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 (разных), которые соответствуют ключевым словам.Solr поиск отдельных "nids" на основе ключевых слов

$solr = new Apache_Solr_Service(SOLR_HOST, SOLR_PORT, SOLR_WEBAPP); 

//How would I search here? 
$results = $solr->search('search', 0, 100); 

EDIT:

ли это выглядит правильно?

$solr = new Apache_Solr_Service(SOLR_HOST, SOLR_PORT, SOLR_WEBAPP); 
    $results = $solr->search(Apache_Solr_Service::escapePhrase($_GET['keywords']), 0, 0, array('facet' => 'true', 'facet.field' => 'nid', 'rows' => 0, 'facet.mincount' => 1)); 

    foreach($results->facet_counts->facet_fields->nid as $nid=>$count) 
    { 
     $nids[] = (int)$nid; 
    } 

ответ

0

Я думаю, вы захотите использовать огранку. Аспект на nid:

?q=search&facet=true&facet.field=nid&rows=0 

Это даст вам список nid с, которые соответствуют наряду с числом раз каждый находится в поиске. С &rows=0 будут возвращены только числа фасетов.

Редактировать: Еще одна вещь, убедитесь, что установили facet.limit=-1 (или любой другой отрицательное число), чтобы указать все результаты, и facet.mincount=1, чтобы убедиться, что только матчи возвращаются. В противном случае он будет возвращать несоответствия с отсчетами с нулем. Если вы хотите сортировать по счету (это не будет по умолчанию, если facet.limit меньше 1), также добавьте facet.sort=count.

+0

Является ли мое редактирование правильным? –

+0

Я не использовал службу PHP Solr, поэтому я не мог сказать наверняка, но для моих неподготовленных глаз это выглядит нормально. –

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