如何在两个不同的领域中搜索两个不同的东西?

时间:2012-03-09 15:20:09

标签: solr lucene nutch solarium

我正在使用NUTCH 1.4和SOLR 3.3.0抓取并索引我的网站。在前端我使用php API SOLARIUM来查询SOLR。我默认搜索以下字段:

content -> of type Text

title -> of type Text

ur-> of type url

我想搜索关键字,但同时我想根据某些网址格式排除部分结果,而不会影响结果返回的总数。 (例如,我总是希望显示20个结果。)

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

我已经看过分面搜索,但我无法绕过它。如果有人能详细解释我会非常感激。

2 个答案:

答案 0 :(得分:1)

我无法帮助您使用日光浴,但您的Solr查询应该相对简单:

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

答案 1 :(得分:0)

http:// {url_endpoint} /?wt = json& rows = 20& start = 0& q = content: contentText OR title: titleText 或者ur: URL

  • wt = json结果将采用json格式
  • rows = 20结果将被每页20条记录分页
  • start = 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();