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 中做到这一点。

我已经看过多面搜索,但我无法理解它。如果有人可以详细解释,我将不胜感激。

4

2 回答 2

1

我无法为您提供 Solarium 的帮助,但您的 Solr 查询应该相对简单:

q=+keyword -ur:exclude&rows=20
于 2012-03-09T16:56:54.987 回答
0

http://{url_endpoint}/?wt=json&rows=20&start=0&q=content: contentText OR title: titleText OR 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();
于 2013-12-17T18:23:24.883 回答