<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;
}
答案 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
。