2012-03-09 62 views
0

我正在使用NUTCH 1.4和SOLR 3.3.0来抓取和索引我的网站。在前端,我使用php API SOLARIUM来查询SOLR。我有我的默认搜索以下字段:如何在两个不同的领域搜索两个不同的东西?

content -> of type Text 

title -> of type Text 

ur-> of type url 

我要搜索的关键字,但在同一时间,我要排除一些基于某些URL模式的结果,而不会影响总人数结果返回。 (例如,我总是想显示20个结果。)

如果有人知道用SOLARIUM做这件事的方法,那将非常好。但如果不是,我很好奇SOLR中如何做到这一点。

我已经看过多面搜索,但我无法用头包住它。如果有人能详细解释我会很感激。

+0

什么意思是“不影响结果总数的回报”?如果你排除文件,他们将不会被退回......我错过了什么? – javanna 2012-03-09 22:34:23

回答

1

我不能帮你日光浴,但你的Solr查询应该是相对比较简单:

q=+keyword -ur:exclude&rows=20 
0

的http:// {} url_endpoint /重量= JSON &行= 20 &开始= 0 & q =含量:contentText OR标题:titleText OR乌尔:URL

  • 重量= JS在结果将是JSON格式
  • 行= 20的结果将通过20条每页进行分页
  • 开始= 0页面开始显示结果
  • Q =查询运行搜索(请务必正确逃生的投入也*通配符在之前和之后寻找任何东西)

在php中使用curl。

$solr_end_point = ''; //enter endpoint 
$search_term = ''; 
$url_type = ''; 
$start = 0; 
$ch = curl_init(); 
$query = urlencode("content:*{$search_term}* OR title:*{$search_term}* OR ur:*{$url_type}*"); 
curl_setopt($ch, CURLOPT_URL, "http://{$solr_end_point}/?wt=json&rows=30&start={$start}&q={$query}"); 
curl_setopt($ch, CURLOPT_HEADER, false); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_TIMEOUT, 2); 
$result = curl_exec($ch); 
curl_close($ch); 
print_r($result); //output result (json) 
$json_result = json_decode($result,true); 
print_r($json_result); //output result as an array 
exit(); 
相关问题