0

NUTCH 1.4 と SOLR 3.3.0 を使用して、Web サイトのクロールとインデックス作成を行っています。フロントエンドでは、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 の結果は、1 ページあたり 20 レコードずつ改ページされます
  • start=0 結果の表示を開始するページ
  • q= 検索を実行するクエリ (入力を適切にエスケープすることも確認してください * 前後のものを検索するためのワイルドカード)

curl を使用して php で。

$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 に答える