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(別名)を取り戻したいと思います。キーワードを基にした別個の「nids」のSolr検索

$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は唯一の一致が返されることを確認します。それ以外の場合は、カウントが0の不一致が返されます。カウント順に並べ替える場合(facet.limitが1未満の場合はデフォルトでは表示されません)、facet.sort=countも追加してください。

+0

私の編集は正しく見えますか? –

+0

私はPHP Solrサービスを使用していないので、確実には言えませんでしたが、私の訓練されていない目には問題はありません。 –

関連する問題