Как искать две разные вещи в двух разных полях?
Вопрос
Я использую 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();