2012-03-13 51 views
0

Solr的搜索關鍵詞我有一個簡單的模式:與NID 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 

當然,如果你調用Solr的網絡服務+符號應該URL編碼中:%2B爲+編碼。其原因是,否則+將被解釋爲一個空間。

此外,如果默認搜索keywords字段,則可以在上面的查詢中省略keywords:

+0

我不希望用戶必須把NID:333 ...是不好的硬編碼? – 2012-03-13 18:08:32

+0

我不明白你爲什麼不能硬編碼。另一方面,你可以在用戶可以選擇的節點ID的前一頁上有一個SELECT。 @samuelg在'nid'上面的帖子中的「fq」選項可能會更好,因爲'fq'表示過濾器查詢不會影響結果的分數。 – 2012-03-13 18:17:18

相關問題