Как искать две разные вещи в двух разных полях?

StackOverflow https://stackoverflow.com//questions/9636471

  •  10-12-2019
  •  | 
  •  

Вопрос

Я использую 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 результатов.)

Если кто-то знает способ сделать это с солярием, это было бы очень приятно.Но если нет, мне интересно, как это можно сделать в Solr.

Я уже смотрел на граненый поиск, но я не мог обернуть голову вокруг него.Если кто-то может объяснить в деталях, я бы очень признателен.

Это было полезно?

Решение

Я не могу помочь вам с солярием, но ваш запрос Solr должен быть относительно простым:

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

Другие советы

http:// {url_endpoint} /? wt= json & rows= 20 и start= 0 & q= content: contentText или заголовок: Titletext или UR: URLEM>

    .
  • 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();
    
    .

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top