¿Cómo buscar dos cosas diferentes en dos campos diferentes?
Pregunta
Estoy usando Nutch 1.4 y Solr 3.3.0 para rastrear e indexar mi sitio web.En la parte frontal, uso el Solárium API PHP para consultar a SOLR.Tengo los siguientes campos en los que busco por defecto:
content -> of type Text
title -> of type Text
ur-> of type url
Quiero buscar una palabra clave, pero al mismo tiempo quiero excluir algunos de los resultados en función de algún patrón de URL sin afectar el número total de resultados.(Por ejemplo, siempre quiero mostrar 20 resultados.)
Si alguien sabe una forma de hacerlo con Solárium, sería realmente agradable.Pero si no, tengo curiosidad, cómo se puede hacer esto en SOLR.
Ya he visto la búsqueda facetada, pero no pude envolver mi cabeza alrededor.Si alguien puede explicar en los detalles, realmente lo apreciaría.
Solución
No puedo ayudarlo con Solárium, pero su consulta SOLR debe ser relativamente sencilla:
q=+keyword -ur:exclude&rows=20
Otros consejos
http:// {url_endpoint} /? wt= json & filows= 20 & start= 0 & q= contenido: contenttext o title: titletext o ur: url
- WT= El resultado de JSON estará en formato JSON
- filas= 20 resultado estará paginado por 20 registros por página
- inicio= 0 Página para comenzar a mostrar los resultados
- q= consulta para ejecutar la búsqueda (asegúrese de escapar correctamente las entradas también * comodín para buscar algo antes y después)
en PHP con rizo.
$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();