Solr根据关键字搜索不同的“nids”

时间:2012-03-13 21:07:16

标签: solr

 <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 = new Apache_Solr_Service(SOLR_HOST, SOLR_PORT, SOLR_WEBAPP); 

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

编辑:

这看起来不错吗?

    $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;
    }

1 个答案:

答案 0 :(得分: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