如何在两个不同的领域搜索两个不同的东西?
问题描述:
我正在使用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中如何做到这一点。
我已经看过多面搜索,但我无法用头包住它。如果有人能详细解释我会很感激。
答
我不能帮你日光浴,但你的Solr查询应该是相对比较简单:
q=+keyword -ur:exclude&rows=20
答
的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();
什么意思是“不影响结果总数的回报”?如果你排除文件,他们将不会被退回......我错过了什么? – javanna 2012-03-09 22:34:23